I got it working... couple of things:
1) Buttons are not movie clips, they are sprites and don't have a timeline, so you have to create a movie clip and add your text to it. 2) You have to add the clips to the application's stage, not the application itself. if you hack around a little you should be able to get it to work. If you are really stuck I'll post my mods. The effect is a bit underwhelming... --- In [email protected], "Corey Smaller" <[EMAIL PROTECTED]> wrote: > > - > http://flexlib.googlecode.com/svn/trunk/docs/flexlib/controls/Fire.html > > is this the same code? should work > > > > -- In [email protected], "helihobby" <helihobby@> wrote: > > > > I got this Effect from a friend and its written in Flash but all in > > Actionscript 3 so it should work for Flex as well ... right ? > > > > The code is posted... > > > > Can anyone help get this to work. > > Its an amazing fire effect. > > > > Here is the code. ( PS in Flash CS3 it works great !!! ) > > > > > > > > > > <?xml version="1.0" encoding="utf-8"?> > > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" > > layout="absolute" creationComplete="init()"> > > > > > > <mx:Script> > > <![CDATA[ > > > > > > import flash.display.BitmapData; > > import flash.geom.Rectangle; > > import flash.geom.Point; > > import flash.geom.Matrix; > > import flash.filters.ColorMatrixFilter; > > import flash.filters.GlowFilter; > > import flash.filters.DisplacementMapFilter; > > > > private function setFire(mc:MovieClip):MovieClip { > > // hide the original MC > > mc.visible =false; > > // calculate the bounds and apply aa padding offset to > > accomodate > > the FX > > var bounds:Object = mc.getBounds(mc); > > var offset_y:Number =30 > > var offset_x:Number =10 > > var w:Number = bounds.width +offset_x > > var h:Number = bounds.height +offset_y > > bounds.x=bounds.x-offset_x/2 > > bounds.y=bounds.y-offset_y/2 > > // creat our FX copy > > var clip=new MovieClip(); > > //create a 'holder' so we can math the original clips > > registration > > point exactly > > var holder:MovieClip=new MovieClip() > > //add 'clip' to the main display object and add > > 'holder' as a child > > of 'clip'. > > this.addChild(clip); > > clip.addChild(holder); > > holder.name="fire_holder"+clip.getChildIndex(holder); > > // set up our bitmap data > > var fireMC:Bitmap=new Bitmap(); > > var shad:Bitmap=new Bitmap() > > var grad:Sprite=new Sprite();; > > // set up the flame colouring > > var fillType:String = GradientType.LINEAR; > > var colors:Array > > var glow:GlowFilter > > // try some different colour flames out here: > > colors = [0xFF0000, 0xFF6600, 0xFFCC00, 0xFFFFFF] > > //colors = [0x33FFFF, 0x3399FF, 0x33FFFF, 0xFFFFFF] > > //colors = [0x006600, 0x009900, 0x00CC00, 0xFFFFFF] > > //colors = [0xCC0099, 0xFF66FF, 0xFFCCFF, 0xFFFFFF] > > //colors = [0x9900FF, 0xCC99FF,0xCCCCFF, 0xFFFFFF] > > var alphas:Array = [100, 100, 100, 100]; > > var ratios:Array = [90, 110,130, 255]; > > var interpolationMethod:String= > > InterpolationMethod.LINEAR_RGB > > var matr:Matrix = new Matrix(); > > matr.createGradientBox( w, h, -(270/180)*Math.PI,0, h); > > var spreadMethod:String = SpreadMethod.REFLECT; > > // draw the flame colouring > > grad.graphics.beginGradientFill(fillType, colors, > > alphas, ratios, > > matr, spreadMethod, interpolationMethod); > > grad.graphics.moveTo(0, 0); > > grad.graphics.lineTo(w, 0); > > grad.graphics.lineTo(w, h); > > grad.graphics.lineTo(0, h); > > grad.graphics.lineTo(0, 0); > > grad.graphics.endFill(); > > //holder.addChild(grad);//uncomment this to see that > > your gradient > > is working properly > > // create a glow filter > > glow = new GlowFilter(colors[1], 1, 13, 13, 2, 1, > > false, false); > > // set up our bitmap data > > var gradBmp:BitmapData = new BitmapData(w, h, true, > > 0x00000000); > > gradBmp.draw(grad); > > var bitmap:BitmapData = new BitmapData(w, h, true, > > 0x00000000); > > var fireBitmap:BitmapData = new BitmapData(w, h, true, > > 0x00000000); > > // copy the original MC > > bitmap.draw(mc, new > > Matrix(1,0,0,1,bounds.x*-1,bounds.y*-1)); > > // set x and y positions > > holder.x=bounds.x > > holder.y=bounds.y > > clip.x=mc.x; > > clip.y=mc.y; > > // combine the gradient colours with the non alpha'd > > area of the MC > > bitmap.copyPixels(gradBmp, gradBmp.rect, new > > Point(0,0), bitmap, > > new Point(0, 0), true); > > // create a silhouette to sit on top > > var shadowMap:BitmapData = bitmap.clone(); > > // add the fire mc to the display object > > fireMC.bitmapData=fireBitmap > > holder.addChild(fireMC) > > var matrix:Array = new Array(); > > matrix = matrix.concat([-1, 0, 0, 0, 0]); > > matrix = matrix.concat([0, -1, 0, 0, 0]); > > matrix = matrix.concat([0, 0, -1, 0, 0]); > > matrix = matrix.concat([0, 0, 0, 1, 0]); > > var darken = new ColorMatrixFilter(matrix); > > var offset = new Point(0, 0); > > var yOff = 4; > > // create our displacement map bitmap data > > var disp:BitmapData = new BitmapData(w, h); > > // create our offsets > > var offsets = new Array(); > > // create a blur filter > > var blur1 = new flash.filters.BlurFilter(3,20, 1); > > offsets.push(new flash.geom.Point()); > > //create a random seed > > var seed= Math.round(Math.random()*300); > > var p = new Point() > > // apply static FX to the shadow map > > shadowMap.applyFilter(shadowMap,shadowMap.rect,p,darken) > > shadowMap.applyFilter(shadowMap,shadowMap.rect,p,glow) > > // redraw loop > > var redraw = function():void { > > //increment offset > > offsets[0].y += yOff; > > // create perlin noise for displacement filter > > disp.perlinNoise(20, 30, 1, seed, true, true, > > 1, false, offsets); > > // create displacement filter > > var displaceFilter:DisplacementMapFilter = new > > DisplacementMapFilter(disp, offset, 1, 1, 50, 50, 'color'); > > // apply filters to bitmap datat > > fireBitmap.applyFilter(bitmap, bitmap.rect, > > p,blur1) > > fireBitmap.applyFilter(fireBitmap, > > bitmap.rect,p,displaceFilter) > > //copy the shadow map > > var fireshadowMap=fireBitmap.clone(); > > // combine the bitmap data > > fireBitmap.copyPixels(shadowMap, > > shadowMap.rect, p, shadowMap,p, > > true); > > fireBitmap.copyPixels(fireshadowMap, > > shadowMap.rect, p, > > fireshadowMap,p, true); > > > > }; > > // add loop > > clip.addEventListener("enterFrame",redraw); > > // swap depths with original mc (comment out > > mc.visible=false to use) > > this.swapChildren(clip, mc) > > //create kill datat > > clip.bitmap1=bitmap > > clip.bitmap2=gradBmp > > clip.bitmap3=shadowMap > > clip.bitmap4=disp > > clip.listener=redraw > > clip.original=mc; > > // return a reference to the new FX MC > > return clip; > > } > > > > private function removeFX(clip:MovieClip):void { > > clip.removeEventListener("enterFrame", clip.listener); > > clip.original.visible=true; > > clip.bitmap1.dispose(); > > clip.bitmap2.dispose(); > > clip.bitmap3.dispose(); > > clip.bitmap4.dispose(); > > this.removeChild(clip); > > } > > > > private function init():void > > { > > // to call the fx > > //fxClip:MovieClip=setFire(mc:MovieClip):MovieClip; > > var flamingText = setFire(bb as MovieClip)// > > // to get rid of the FX: > > //removeFX(flamingText) > > } > > > > > > > > ]]> > > </mx:Script> > > <mx:Button x="140" y="118" label="Button" id="bb" > > click="{setFire(this as MovieClip)}"/> > > > > > > </mx:Application> > > >

