package ffffff.exp { import flash.display.Graphics; import flash.display.Sprite; import flash.filters.ColorMatrixFilter; import flash.events.Event; import flash.geom.Point; import flash.filters.DisplacementMapFilter; import flash.display.BitmapDataChannel; import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.MovieClip; /** * @author white */ public class DeepDeepBlue extends MovieClip { private const WIDTH:Number = 400; private const HEIGHT:Number = 300; private var bmpClouds : BitmapData = new BitmapData(WIDTH,HEIGHT,false); private var pixelsBmp : BitmapData = new BitmapData(WIDTH,HEIGHT,false,0);//,0xFFFFFF); private var origin:Point = new Point(0,0); private var displace : DisplacementMapFilter; private var channels:uint; private var seed:Number; private var baseX:Number = 100; private var baseY:Number = 100; private var sp:Sprite = new Sprite(); public function DeepDeepBlue() { var bitmap : Bitmap = new Bitmap(bmpClouds); addChild(bitmap); seed = 5; channels = BitmapDataChannel.RED | BitmapDataChannel.BLUE | BitmapDataChannel.GREEN; var pixelsBitmap:Bitmap = new Bitmap(pixelsBmp); addChild(pixelsBitmap); //displace = new DisplacementMapFilter(bmpClouds, new Point(0, 0), BitmapDataChannel.RED,BitmapDataChannel.BLUE,15,15); addEventListener(Event.ENTER_FRAME, update); var gr : Graphics = sp.graphics; gr.lineStyle(.1,0xFFFFFF); gr.lineTo(WIDTH,0); gr.lineTo(WIDTH,HEIGHT); gr.lineTo(0,HEIGHT); gr.lineTo(0,0); } private function update(evt:Event) :void { pixelsBmp.draw(sp); bmpClouds.perlinNoise(400, 300, 2, seed, false, true, channels, false, [new Point(baseX,baseY), new Point(baseY,baseX)]); baseX++; baseY++; displace = new DisplacementMapFilter(bmpClouds, new Point(0, 0), BitmapDataChannel.RED,BitmapDataChannel.BLUE,50,50); var f2 : ColorMatrixFilter = new ColorMatrixFilter([ 1, 0, 0, 0, -20, .05, 1, 0, 0, -15, .05, 0, 1, 0, -5.8, 0, 0, 0, 1, 0]); pixelsBmp.applyFilter(pixelsBmp, pixelsBmp.rect, origin, f2); pixelsBmp.applyFilter(pixelsBmp, pixelsBmp.rect, origin, displace); } } }