package ffffff.exp { import flash.text.TextFieldAutoSize; import flash.text.TextFormat; import flash.filters.GlowFilter; import flash.text.TextField; import flash.filters.BlurFilter; import flash.geom.Matrix; 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 BlueFire extends MovieClip { private const WIDTH:Number = 350; private const HEIGHT:Number = 150; 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(); private var cf : ColorMatrixFilter; private var cf2 : ColorMatrixFilter; private var txt : TextField = new TextField(); public function BlueFire() { var tf : TextFormat = new TextFormat("Courier new"); tf.size = 40; txt.defaultTextFormat = tf; var glow : GlowFilter = new GlowFilter(0x66FFFF); txt.filters = [glow]; txt.textColor = 0xffffff; txt.autoSize = TextFieldAutoSize.LEFT; txt.text = "0 x F F F F F F"; var bitmap : Bitmap = new Bitmap(bmpClouds); addChild(bitmap); seed = 5; channels = BitmapDataChannel.RED | BitmapDataChannel.BLUE; cf = new ColorMatrixFilter([ 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]); cf2 = new ColorMatrixFilter([ .9, 0, 0, 0, -3, 0, .9, 0, 0, -4, .01, .01, 1.01, 0, -7, 0, 0, 0, 1, 0]); var pixelsBitmap:Bitmap = new Bitmap(pixelsBmp); addChild(pixelsBitmap); 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 { bmpClouds.perlinNoise(10, 45, 3, seed, true, true, channels, false, [new Point(baseX,baseY), new Point(baseY,baseX), new Point(baseY*2,baseX*2)]); bmpClouds.applyFilter(bmpClouds, bmpClouds.rect, origin, cf); var blur : BlurFilter = new BlurFilter(3,3,1); baseX+=0.1; baseY+=1.5; displace = new DisplacementMapFilter(bmpClouds, new Point(0, 0), BitmapDataChannel.BLUE,BitmapDataChannel.RED,4,4); pixelsBmp.applyFilter(pixelsBmp, pixelsBmp.rect, origin, blur); pixelsBmp.applyFilter(pixelsBmp, pixelsBmp.rect, origin, cf2); var m:Matrix = new Matrix(); m.translate(55, 90); pixelsBmp.draw(txt, m); pixelsBmp.applyFilter(pixelsBmp, pixelsBmp.rect, origin, displace); } } }