// 円はグラデーション使ってません。 // 円の中は全て同じ色です。 // // クリックすると一時停止します。 // リロードすればノイズのパターンは変化します。 // 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 }); } } } perlinNoise遊び4 錯覚。雨が降っているかのように見える