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

  import flash.display.Sprite;

  [SWF(width='700', height='500', frameRate='60', backgroundColor='#CCCCCC')]
  
  public class Main extends Sprite
  {
    private var emitter:Emitter2D;
    
    public function Main()
    {
      emitter = new Flock();
      
      var renderer:DisplayObjectRenderer = new DisplayObjectRenderer();
      renderer.addEmitter( emitter );
      addChild( renderer );
      
      emitter.start( );
    }
  }
}
package
{
  import org.flintparticles.common.counters.Blast;
  import org.flintparticles.common.initializers.ImageClass;
  import org.flintparticles.twoD.actions.ApproachNeighbours;
  import org.flintparticles.twoD.actions.BoundingBox;
  import org.flintparticles.twoD.actions.MatchVelocity;
  import org.flintparticles.twoD.actions.MinimumDistance;
  import org.flintparticles.twoD.actions.Move;
  import org.flintparticles.twoD.actions.RotateToDirection;
  import org.flintparticles.twoD.actions.SpeedLimit;
  import org.flintparticles.twoD.emitters.Emitter2D;
  import org.flintparticles.twoD.initializers.Position;
  import org.flintparticles.twoD.initializers.Velocity;
  import org.flintparticles.twoD.zones.DiscZone;
  import org.flintparticles.twoD.zones.RectangleZone;

  import flash.geom.Point;

  public class Flock extends Emitter2D
  {
    public function Flock()
    {
      counter = new Blast( 250 );
      
      addInitializer( new ImageClass( Bird ) );
      addInitializer( new Position( new RectangleZone( 10, 10, 680, 480 ) ) );
      addInitializer( new Velocity( new DiscZone( new Point( 0, 0 ), 150, 100 ) ) );

      addAction( new ApproachNeighbours( 150, 100 ) );
      addAction( new MatchVelocity( 20, 200 ) );
      addAction( new MinimumDistance( 10, 600 ) );
      addAction( new SpeedLimit( 100, true ) );
      addAction( new RotateToDirection() );
      addAction( new BoundingBox( 0, 0, 700, 500 ) );
      addAction( new SpeedLimit( 200 ) );
      addAction( new Move() );
    }
  }
}
import org.flintparticles.common.counters.*;
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 emitter:Emitter2D = new Emitter2D();
emitter.counter = new Blast( 250 );

emitter.addInitializer( new ImageClass( Bird ) );
emitter.addInitializer( new Position( new RectangleZone( 10, 10, 680, 480 ) ) );
emitter.addInitializer( new Velocity( new DiscZone( new Point( 0, 0 ), 150, 100 ) ) );

emitter.addAction( new ApproachNeighbours( 150, 100 ) );
emitter.addAction( new MatchVelocity( 20, 200 ) );
emitter.addAction( new MinimumDistance( 10, 600 ) );
emitter.addAction( new SpeedLimit( 100, true ) );
emitter.addAction( new RotateToDirection() );
emitter.addAction( new BoundingBox( 0, 0, 700, 500 ) );
emitter.addAction( new SpeedLimit( 200 ) );
emitter.addAction( new Move() );

var renderer:DisplayObjectRenderer = new DisplayObjectRenderer();
renderer.addEmitter( emitter );
addChild( renderer );

emitter.start( );
<?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="700" height="500"
  backgroundColor="#CCCCCC">
  
<f:DisplayObjectRenderer id="renderer" width="700" height="500">
  <f:emitters>
    <f:Emitter id="emitter" autoStart="true">
      <f:counter>
        <f:Blast startCount="250"/>
      </f:counter>
      <f:initializers>
        <f:Position>
          <f:RectangleZone top="10" left="10" bottom="490" right="690"/>
        </f:Position>
        <f:Velocity>
          <f:DiscZone centerX="0" centerY="0" innerRadius="100" outerRadius="150"/>
        </f:Velocity>
        <f:ImageClass imageClass="{Bird}"/>
      </f:initializers>
      <f:actions>
        <f:Move/>
        <f:RotateToDirection/>
        <f:ApproachNeighbours acceleration="100" maxDistance="150"/>
        <f:MatchVelocity acceleration="200" maxDistance="20"/>
        <f:MinimumDistance acceleration="600" minimum="10"/>
        <f:SpeedLimit limit="100" isMinimum="true"/>
        <f:SpeedLimit limit="200"/>
        <f:BoundingBox left="0" right="700" top="0" bottom="500"/>
      </f:actions>
    </f:Emitter>
  </f:emitters>
</f:DisplayObjectRenderer>
</s:Application>