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( );
    }
  }
}

Add comments in the forum.