In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

perlinNoise遊び4 錯覚。雨が降っているかのように見える

円はグラデーション使ってません。
円の中は全て同じ色です。
クリックすると一時停止します。
リロードすればノイズのパターンは変化します。
Get Adobe Flash player
by cpu_t 25 Mar 2010
/**
 * 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
			});
		}
    }
}