perlinNoise遊び4 錯覚。雨が降っているかのように見える
円はグラデーション使ってません。
円の中は全て同じ色です。
クリックすると一時停止します。
リロードすればノイズのパターンは変化します。
/**
* Copyright cpu_t ( http://wonderfl.net/user/cpu_t )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/2URO
*/
// 円はグラデーション使ってません。
// 円の中は全て同じ色です。
//
// クリックすると一時停止します。
// リロードすればノイズのパターンは変化します。
//
package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
public class FlashTest extends Sprite
{
private var bmpdata:BitmapData;
private var sp:Sprite;
public function FlashTest()
{
bmpdata = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0);
addChild(new Bitmap(bmpdata));
reset();
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
stage.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void
{
isStop = !isStop;
});
}
private var isStop:Boolean = false;
private function reset():void
{
bmpdata.perlinNoise(bmpdata.width*.5, bmpdata.height*.5, 1, Math.random() * 0xFFFFFF, false, false);
addChild(sp = new Sprite());
}
private var array:Array = new Array();
private var lifetime:Number = 20;
private function enterFrameHandler(e:Event):void
{
if (isStop) return;
for (var c:int = 0; c < 3; c++)
addCrcl()
for (var i:int = 0; i < array.length; i++)
{
var obj:Object = array[i];
obj.sp.scaleX = obj.sp.scaleY = ++obj.life / lifetime;
if (obj.life >= lifetime)
{
sp.removeChild(obj.sp);
array.splice(i--, 1);
}
}
}
private function addCrcl():void
{
var crcl:Sprite = new Sprite();
sp.addChild(crcl);
var x:int = Math.random() * bmpdata.width;
var y:int = Math.random() * bmpdata.height;
crcl.x = x;
crcl.y = y;
crcl.scaleX = crcl.scaleY = 0;
crcl.graphics.beginFill(bmpdata.getPixel(x, y));
crcl.graphics.drawCircle(0, 0, 20);
array.push({
sp:crcl,
life:0
});
}
}
}