package { import fl.transitions.easing.None; import flash.display.MovieClip; import flash.display.Sprite; import flash.geom.Point; import flash.geom.Rectangle; import flash.utils.getDefinitionByName; import org.gs.TweenLite; import org.flintparticles.actions.*; import org.flintparticles.counters.*; import org.flintparticles.displayObjects.*; import org.flintparticles.emitters.Emitter; import org.flintparticles.initializers.*; import org.flintparticles.renderers.*; import org.flintparticles.zones.*; public class FlintExample extends Sprite { public var smokeRenderer : BitmapRenderer; public var iceRenderer : BitmapRenderer; public var starRenderer : BitmapRenderer; public function FlintExample() : void { smokeRenderer = new BitmapRenderer( new Rectangle( 0, 0, 550, 400 ) ); addChild( smokeRenderer ); iceRenderer = new BitmapRenderer( new Rectangle( 0, 0, 550, 400 ) ); addChild( iceRenderer ); starRenderer = new BitmapRenderer( new Rectangle( 0, 0, 550, 400 ) ); addChild( starRenderer ); fireMissile(); } public function fireAsteroid() : void { var asteroid : MovieClip = findMovieClipAsset( "Asteroid" ); addChild( asteroid ); asteroid.x = 300; asteroid.y = -190; var ice : Emitter = new Emitter(); ice.counter = new Steady( 30, 40 ); ice.addInitializer( new Lifetime( 8, 9 ) ); ice.addInitializer( new Velocity( new DiscZone( new Point( 0, 0 ), 30, 50 ) ) ); ice.addInitializer( new SharedImage( new RadialDot( 7 ) ) ); ice.addAction( new Age( ) ); ice.addAction( new Move( ) ); ice.addAction( new LinearDrag( 0.85 ) ); ice.addAction( new Scale( 3, 10 ) ); ice.addAction( new Fade( 0.15, 0 ) ); ice.addAction( new ColorChange( 0x4D83FF, 0x050C3F ) ); ice.renderer = iceRenderer; ice.x = 300; ice.y = -180; ice.start( ); var snowFlake : Emitter = new Emitter(); snowFlake.counter = new Steady( 1, 5 ); snowFlake.addInitializer( new Lifetime( 9, 10 ) ); snowFlake.addInitializer( new Velocity( new DiscZone( new Point( 0, 0 ), 30, 50 ) ) ); snowFlake.addInitializer( new SharedImage( new Star( 1 ) ) ); snowFlake.addAction( new Age( ) ); snowFlake.addAction( new Move( ) ); snowFlake.addAction( new LinearDrag( 0.75 ) ); snowFlake.addAction( new Scale( 2, 4 ) ); snowFlake.addAction( new Fade( 0.90, 0 ) ); snowFlake.addAction( new Accelerate( 0, 5 ) ); snowFlake.addAction( new ColorChange( 0xC4D6FF, 0x050C3F ) ); snowFlake.renderer = starRenderer; snowFlake.x = 300; snowFlake.y = -180; snowFlake.start( ); TweenLite.to( asteroid, 12, { y:500, rotation:360, ease:None } ); TweenLite.to( snowFlake, 12, { y:520, ease:None } ); TweenLite.to( ice, 12, { y:520, ease:None, onComplete: onIceTweenComplete, onCompleteParams: [ ice, asteroid ] } ); } public function fireMissile() : void { var missile : MovieClip = findMovieClipAsset( "Missile" ); addChild( missile ); missile.x = 72; missile.y = 480; var smoke : Emitter = new Emitter(); smoke.counter = new Steady( 25, 75 ); smoke.addInitializer( new Lifetime( 2, 3 ) ); smoke.addInitializer( new Velocity( new DiscSectorZone( new Point( 0, 0 ), 40, 30, Math.PI * .25, Math.PI * .85 ) ) ); smoke.addInitializer( new SharedImage( new RadialDot( 6 ) ) ); smoke.addAction( new Age( ) ); smoke.addAction( new Move( ) ); smoke.addAction( new LinearDrag( 0.01 ) ); smoke.addAction( new Scale( 1, 10 ) ); smoke.addAction( new Fade( 0.15, 0 ) ); smoke.addAction( new RandomDrift( 12, 12 ) ); smoke.renderer = smokeRenderer; smoke.x = 75; smoke.y = 500; smoke.start( ); TweenLite.to( missile, 6, { y:-220, ease:None } ); TweenLite.to( smoke, 6, { y:-200, ease:None, onComplete: onSmokeTweenComplete, onCompleteParams: [ smoke, missile ] } ); } public function onIceTweenComplete( nIce : Emitter, nAsteroid : MovieClip ) : void { nIce.counter = new ZeroCounter(); removeChild( nAsteroid ); fireMissile(); } public function onSmokeTweenComplete( nSmoke : Emitter, nMissile : MovieClip ) : void { nSmoke.counter = new ZeroCounter(); removeChild( nMissile ); fireAsteroid(); } public function findMovieClipAsset( defName : String ) : MovieClip { var c : Class = Class( getDefinitionByName( defName ) ); return new c(); } } }