package
{
  import org.flintparticles.twoD.emitters.Emitter2D;
  import org.flintparticles.twoD.renderers.BitmapRenderer;

  import flash.display.Sprite;
  import flash.geom.Rectangle;

  [SWF(width='300', height='400', frameRate='60', backgroundColor='#000000')]
  
  

  public class Main extends Sprite
  {
    private var smoke:Emitter2D;
    private var fire:Emitter2D;
    
    public function Main()
    {
      smoke = new Smoke();
      smoke.x = 150;
      smoke.y = 380;
      smoke.start();
      
      fire = new Fire();
      fire.x = 150;
      fire.y = 380;
      fire.start();
      
      var renderer:BitmapRenderer = new BitmapRenderer( new Rectangle( 0, 0, 300, 400 ) );
      renderer.addEmitter( smoke );
      renderer.addEmitter( fire );
      addChild( renderer );
    }
  }
}
package
{
  import org.flintparticles.common.actions.Age;
  import org.flintparticles.common.actions.ColorChange;
  import org.flintparticles.common.actions.ScaleImage;
  import org.flintparticles.common.counters.Steady;
  import org.flintparticles.common.initializers.Lifetime;
  import org.flintparticles.common.initializers.SharedImage;
  import org.flintparticles.twoD.actions.Accelerate;
  import org.flintparticles.twoD.actions.LinearDrag;
  import org.flintparticles.twoD.actions.Move;
  import org.flintparticles.twoD.actions.RotateToDirection;
  import org.flintparticles.twoD.emitters.Emitter2D;
  import org.flintparticles.twoD.initializers.Position;
  import org.flintparticles.twoD.initializers.Velocity;
  import org.flintparticles.twoD.zones.DiscSectorZone;
  import org.flintparticles.twoD.zones.DiscZone;

  import flash.geom.Point;

  public class Fire extends Emitter2D
  {
    public function Fire()
    {
      counter = new Steady( 60 );

      addInitializer( new Lifetime( 2, 3 ) );
      addInitializer( new Velocity( new DiscSectorZone( new Point( 0, 0 ), 20, 10, -Math.PI, 0 ) ) );
      addInitializer( new Position( new DiscZone( new Point( 0, 0 ), 3 ) ) );
      addInitializer( new SharedImage( new FireBlob() ) );

      addAction( new Age( ) );
      addAction( new Move( ) );
      addAction( new LinearDrag( 1 ) );
      addAction( new Accelerate( 0, -40 ) );
      addAction( new ColorChange( 0xFFFFCC00, 0x00CC0000 ) );
      addAction( new ScaleImage( 1, 1.5 ) );
      addAction( new RotateToDirection() );
    }
  }
}
package
{
  import org.flintparticles.common.actions.Age;
  import org.flintparticles.common.actions.Fade;
  import org.flintparticles.common.actions.ScaleImage;
  import org.flintparticles.common.counters.Steady;
  import org.flintparticles.common.displayObjects.RadialDot;
  import org.flintparticles.common.initializers.Lifetime;
  import org.flintparticles.common.initializers.SharedImage;
  import org.flintparticles.twoD.actions.LinearDrag;
  import org.flintparticles.twoD.actions.Move;
  import org.flintparticles.twoD.actions.RandomDrift;
  import org.flintparticles.twoD.emitters.Emitter2D;
  import org.flintparticles.twoD.initializers.Velocity;
  import org.flintparticles.twoD.zones.DiscSectorZone;

  import flash.geom.Point;

  public class Smoke extends Emitter2D
  {
    public function Smoke()
    {
      counter = new Steady( 10 );
      
      addInitializer( new Lifetime( 11, 12 ) );
      addInitializer( new Velocity( new DiscSectorZone( new Point( 0, 0 ), 40, 30, -4 * Math.PI / 7, -3 * Math.PI / 7 ) ) );
      addInitializer( new SharedImage( new RadialDot( 6 ) ) );
      
      addAction( new Age( ) );
      addAction( new Move( ) );
      addAction( new LinearDrag( 0.01 ) );
      addAction( new ScaleImage( 1, 15 ) );
      addAction( new Fade( 0.15, 0 ) );
      addAction( new RandomDrift( 15, 15 ) );
    }
  }
}
import org.flintparticles.common.actions.*;
import org.flintparticles.common.counters.*;
import org.flintparticles.common.displayObjects.RadialDot;
import org.flintparticles.common.initializers.*;
import org.flintparticles.twoD.actions.*;
import org.flintparticles.twoD.emitters.Emitter2D;
import org.flintparticles.twoD.initializers.*;
import org.flintparticles.twoD.renderers.*;
import org.flintparticles.twoD.zones.*;

var smoke:Emitter2D = new Emitter2D();
smoke.counter = new Steady( 10 );

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 ScaleImage( 1, 15 ) );
smoke.addAction( new Fade( 0.15, 0 ) );
smoke.addAction( new RandomDrift( 15, 15 ) );

smoke.x = 150;
smoke.y = 380;
smoke.start( );

var fire:Emitter2D = new Emitter2D();
fire.counter = new Steady( 60 );

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 SharedImage( new FireBlob() ) );

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 ScaleImage( 1, 1.5 ) );
fire.addAction( new RotateToDirection() );

fire.x = 150;
fire.y = 380;
fire.start( );

var renderer:BitmapRenderer = new BitmapRenderer( new Rectangle( 0, 0, 300, 400 ) );
renderer.addEmitter( fire );
renderer.addEmitter( smoke );
addChild( renderer );
<?xml version="1.0" encoding="utf-8"?>
<s:Application
  xmlns:fx="http://ns.adobe.com/mxml/2009" 
  xmlns:s="library://ns.adobe.com/flex/spark" 
  xmlns:f="http://flintparticles.org/2009/flint2d"
  width="300" height="400"
  backgroundColor="#000000">
  
<f:BitmapRenderer id="renderer" width="300" height="400">
  <f:emitters>
    <f:Emitter id="smoke" autoStart="true" x="150" y="380">
      <f:counter>
        <f:Steady rate="10"/>
      </f:counter>
      <f:initializers>
        <f:Lifetime minLifetime="11" maxLifetime="12"/>
        <f:Velocity>
          <f:DiscSectorZone centerX="0" centerY="0" innerRadius="30" outerRadius="40" minAngle="{-4 * Math.PI / 7}" maxAngle="{-3 * Math.PI / 7}"/>
        </f:Velocity>
        <f:SharedImage>
          <f:RadialDot radius="6"/>
        </f:SharedImage>
      </f:initializers>
      <f:actions>
        <f:Move/>
        <f:Age/>
        <f:LinearDrag drag="0.04"/>
        <f:Fade startAlpha="0.15" endAlpha="0"/>
        <f:ScaleImage startScale="1" endScale="15"/>
        <f:RandomDrift driftX="15" driftY="15"/>
      </f:actions>
    </f:Emitter>
    <f:Emitter id="fire" autoStart="true" x="150" y="380">
      <f:counter>
        <f:Steady rate="60"/>
      </f:counter>
      <f:initializers>
        <f:Lifetime minLifetime="2" maxLifetime="3"/>
        <f:Position>
          <f:DiscZone centerX="0" centerY="0" outerRadius="3"/>
        </f:Position>
        <f:Velocity>
          <f:DiscSectorZone centerX="0" centerY="0" innerRadius="10" outerRadius="20" minAngle="{-Math.PI}" maxAngle="0"/>
        </f:Velocity>
        <f:SharedImage image="{new FireBlob()}"/>
      </f:initializers>
      <f:actions>
        <f:Move/>
        <f:RotateToDirection/>
        <f:Age/>
        <f:LinearDrag drag="1"/>
        <f:Accelerate x="0" y="-40"/>
        <f:ColorChange startColor="0xFFFFCC00" endColor="0x00CC0000"/>
        <f:ScaleImage startScale="1" endScale="1.5"/>
      </f:actions>
    </f:Emitter>
  </f:emitters>
</f:BitmapRenderer>
</s:Application>