Saturday, December 5, 2009

Flex Fireworks

Following code is to create fireworks effect in Flex using flex effects only..

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Style>
Application{
backgroundColor: #ffffff;
}
Button {
cornerRadius: 25;
textIndent: 0;
border-style:none;
}
</mx:Style>
<mx:Script>
<![CDATA[
import mx.controls.SWFLoader;
import flash.utils.setTimeout;
import mx.effects.Resize;
import mx.effects.easing.Exponential;
import mx.effects.easing.Bounce;
import mx.effects.easing.Elastic;
import mx.effects.Move;
import mx.effects.Sequence;
import mx.controls.Alert;
import mx.events.EffectEvent;
import mx.effects.Fade;
import mx.controls.Button;
import mx.effects.Parallel;
import mx.effects.Glow;

[Embed(source="../assets/firework.mp3")]
public var blastSound:Class;

private function init():void{
start();
setTimeout(start,2000);
setTimeout(start,3000);

}

private function start():void{
var button:Button = new Button();
button.width=20;
button.height=20;
var xFrom:int = Math.random()*1200;
var yFrom:int = (Math.random()*50)+550;

var xTo:int = Math.random()*1200;
var yTo:int = (Math.random()*100)+50;

var myColor:int = Math.round( Math.random()*0xFFFFFF );

button.x = xFrom;
button.y = yFrom;
button.setStyle("fillColors",[myColor, myColor, myColor, myColor]);

var seq:Sequence = new Sequence(button);
var p1:Parallel = new Parallel();

var move:Move = new Move();
move.xFrom = xFrom;
move.xTo = xTo;
move.yFrom = yFrom;
move.yTo = yTo;
move.duration = 2000;
move.easingFunction = mx.effects.easing.Exponential.easeOut;
p1.addChild(move);

var resize:Resize = new Resize();
resize.heightBy=10;
resize.widthBy=10;
resize.duration = 1000;
p1.addChild(resize);

seq.addChild(p1);

var gl:Glow = new Glow();
gl.blurXTo=20;
gl.blurYTo=20;
gl.color = myColor;
gl.duration = 200;
seq.addChild(gl);


var parallel:Parallel = new Parallel();
var glow:Glow = new Glow();
glow.blurXTo = 1000;
glow.blurYTo = 1000;
glow.duration = 1000;
glow.color = myColor;

var fade:Fade = new Fade();
fade.duration = 500;
fade.alphaFrom = 1;
fade.alphaTo = 0;

parallel.addChild(glow);
parallel.addChild(fade);
this.addChild(button);
seq.addChild(parallel);

seq.addEventListener(EffectEvent.EFFECT_END,function(event:Event):void{
var s:Sequence = event.target as Sequence;
var b:Button = s.target as Button;
b.parent.removeChild(b);
setTimeout(start,Math.round(Math.random()*1000));
});
seq.play();
(new blastSound() as Sound).play();
}
]]>
</mx:Script>

</mx:Application>