Fire and Smoke
Flash required: You need version 9 or later of the free Flash player from Adobe to use this content. To download and install the free player from Adobe’s web site click here.
Source code
This project uses a single document class as follows.
package
{
import flash.display.Sprite;
import flash.geom.Point;
import flash.geom.Rectangle;
import org.flintparticles.actions.*;
import org.flintparticles.counters.*;
import org.flintparticles.displayObjects.RadialDot;
import org.flintparticles.emitters.Emitter;
import org.flintparticles.initializers.*;
import org.flintparticles.renderers.*;
import org.flintparticles.zones.*;
public class FireAndSmoke extends Sprite
{
private var smoke:Emitter;
private var fire:Emitter;
public function FireAndSmoke()
{
smoke = new Emitter();
smoke.counter = new Steady( 9, 11 );
smoke.addInitializer( new Lifetime( 11, 12 ) );
smoke.addInitializer( new Velocity( new DiscSectorZone( new Point( 0, 0 ), 40, 30,
-4 * Math.PI / 7, -3 * Math.PI / 7 ) ) );
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, 15 ) );
smoke.addAction( new Fade( 0.15, 0 ) );
smoke.addAction( new RandomDrift( 15, 15 ) );
var smokeRenderer:BitmapRenderer = new BitmapRenderer( new Rectangle( 0, 0, 300, 400 ) );
smoke.renderer = smokeRenderer;
addChild( smokeRenderer );
smoke.x = 150;
smoke.y = 380;
smoke.start( );
fire = new Emitter();
fire.counter = new Steady( 55, 65 );
fire.addInitializer( new Lifetime( 2, 3 ) );
fire.addInitializer( new Velocity( new DiscSectorZone( new Point( 0, 0 ), 20, 10,
-Math.PI, 0 ) ) );
fire.addInitializer( new Position( new DiscZone( new Point( 0, 0 ), 3 ) ) );
fire.addInitializer( new ImageClass( RadialDot, 5 ) );
fire.addAction( new Age( ) );
fire.addAction( new Move( ) );
fire.addAction( new LinearDrag( 1 ) );
fire.addAction( new Accelerate( 0, -40 ) );
fire.addAction( new ColorChange( 0xFFFFCC00, 0x00CC0000 ) );
fire.addAction( new Scale( 1, 1.5 ) );
var fireRenderer:DisplayObjectRenderer = new DisplayObjectRenderer();
fire.renderer = fireRenderer;
addChild( fireRenderer );
fire.x = 150;
fire.y = 380;
fire.start( );
}
}
}