forked from: #PrayForJapan
forked from #PrayForJapan (diff: 176)
Copyright Murai ( http://wonderfl.net/user/Murai ) MIT License ( http://www.opensource.org/licenses/mit-license.php ) Downloaded from: http://wonderfl.net/c/djli @author Takashi Murai (KAYAC) @see http://twitter.com/search?q=%23prayforjapan @see http://prayforjapan.jp/ @see http://www.youtube.com/watch?v=O8x6_JHDkhI&feature=player_embedded
ActionScript3 source code
/**
* Copyright umi_kappa ( http://wonderfl.net/user/umi_kappa )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/nJBv
*/
/**
* Copyright Murai ( http://wonderfl.net/user/Murai )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/djli
*/
package {
import flash.display.Sprite;
/**
* @author Takashi Murai (KAYAC)
* @see http://twitter.com/search?q=%23prayforjapan
* @see http://prayforjapan.jp/
* @see http://www.youtube.com/watch?v=O8x6_JHDkhI&feature=player_embedded
*/
[SWF(backgroundColor="#000000", frameRate="60", width="465", height="465")]
public class PrayForJapan extends Sprite {
private var grid:Grid;
private var layer:Sprite;
public function PrayForJapan()
{
//黒背景
var background:Sprite = new Sprite();
background.graphics.beginFill(0x000000, 1);
background.graphics.drawRect(0, 0, 465, 465);
background.graphics.endFill();
addChild(background);
//レイヤー
layer = new Sprite();
grid = new Grid(47, 47, 40);
//addEventListener(Event.ENTER_FRAME, onEF);
addChild(background);
addChild(layer);
//箱の生成
var box:Sprite;
do
{
box = new Sprite();
box = grid.create();
//四角を配置
layer.addChild(box);
}
while (box.y < 465);
}
}
}
import flash.display.*;
internal class Grid {
private var _map:Array = [];
private var gW:int;
private var gH:int;
private var max:int;
private var scale:int;
public var emptyPos:int = 0;
private var loaders:Array = [];
private var q:int = 0;
public function Grid(w:int, h:int, max:int):void
{
this.gW = w;
this.gH = h;
//最大の倍率
this.max = max;
//四角の最小サイズ
this.scale = 10;
}
public function create():Sprite
{
var pointer:int = -1;
var emptyWidth:int = 0;
for ( var i:int = emptyPos; i < emptyPos + 500 ; i++ )
{
if ( !_map[i] && pointer == -1 )
{
pointer = i;
emptyWidth++;
}
else if ( emptyWidth >= max )
{
break;
}
else if ( !_map[i] && !( i % gW == 0 && i != emptyPos ) )
{
emptyWidth++;
}
else if ( pointer != -1 )
{
break;
}
}
// 10.1 >> 0 = 10 小数点切捨ての高速バージョン
var ww:int = (Math.random() * emptyWidth) >> 0 + 1;
var p:int = pointer;
for ( var yy:int = 0; yy < ww; yy++ )
{
for ( var xx:int = 0; xx < ww; xx++ )
{
_map[p] = 1;
p++;
}
p += gW - ww;
}
emptyPos = pointer + ww;
//座標
var px:int = pointer % gW * scale;
var py:int = pointer == 0 ? 0 : (pointer / gW) >> 0 * scale;
var sW:Number = ww * scale;
var s:Sprite = new Sprite();
s.x = px;
s.y = py;
//線の描画
s.graphics.lineStyle(1, 0xCCCCCC, 0.5, true, "none");
s.graphics.drawRect(0, 0, sW, sW);
s.graphics.moveTo(0, 0);
s.graphics.lineTo(sW, sW);
s.graphics.moveTo(sW, 0);
s.graphics.lineTo(0, sW);
return s;
}
}