WaterColor Flow WaterColor Flow * * @author civet * http://www.dreamana.com/ civet forked:1favorite:5lines:41license : All rights reserved modified : 2009-03-30 22:29:55 Embed Tweet /** * WaterColor Flow * * @author civet * http://www.dreamana.com/ */ package { import flash.display.Sprite; import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BitmapDataChannel; import flash.events.*; import flash.geom.Point; import flash.utils.Timer; [SWF(frameRate='24', backgroundColor='0xffffff')] public class WaterColorFlow extends Sprite { private var bmd:BitmapData; private var seed:int; private var channels:uint; private var pt:Point private var offset:Array; private var timer:Timer; public function WaterColorFlow() { bmd = new BitmapData(640, 480, true, 0x00000000); addChild( new Bitmap(bmd) ); seed = int(Math.random() * 10); channels = BitmapDataChannel.ALPHA | BitmapDataChannel.RED | BitmapDataChannel.GREEN | BitmapDataChannel.BLUE; pt = new Point(); offset = [pt, pt]; timer = new Timer(60); timer.addEventListener(TimerEvent.TIMER, loop); timer.start(); stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown); } private function onDown(event:Event):void { if(timer.running) timer.stop(); else timer.start(); } private function loop(e:Event):void { bmd.lock(); bmd.perlinNoise(320, 240, 2, seed, false, true, channels, false, offset); bmd.unlock(); pt.x += (mouseX - 320) >> 2; //offsetX; pt.y += (mouseY - 240) >> 2; //offsetY; } } } Code Fullscreen Preview Fullscreen bradsedito BeloitAve zakky CON hikipuro perlinNoise offset start BitmapDataChannel.ALPHA addEventListener BitmapDataChannel.GREEN running stop BitmapDataChannel.RED BitmapDataChannel.BLUE MouseEvent.MOUSE_DOWN TimerEvent.TIMER Point Timer Array Event Math.random uint int sort new page view favorite forked pv404 forked from: WaterColor Flow abustin forked:0 favorite:0lines:35 (diff:20)