Snowfall

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.

The snow effect from the tutorial overlaid on an image.

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

  import flash.display.Sprite;

  [SWF(width='600', height='400', frameRate='61', backgroundColor='#000000')]
  
  public class Main extends Sprite
  {
    [Embed(source="assets/Snow_1.png")]
    public var SnowBackground:Class;
    [Embed(source="assets/Snow_1_over.png")]
    public var SnowForeground:Class;

    private var emitter:Emitter2D;
    
    public function Main()
    {
      emitter = new Snowfall();
      
      addChild( new SnowBackground() );

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

      emitter.start();
      emitter.runAhead( 10 );
    }
  }
}
package
{
  import org.flintparticles.common.counters.Steady;
  import org.flintparticles.common.displayObjects.RadialDot;
  import org.flintparticles.common.initializers.ImageClass;
  import org.flintparticles.common.initializers.ScaleImageInit;
  import org.flintparticles.twoD.actions.DeathZone;
  import org.flintparticles.twoD.actions.Move;
  import org.flintparticles.twoD.actions.RandomDrift;
  import org.flintparticles.twoD.emitters.Emitter2D;
  import org.flintparticles.twoD.initializers.Position;
  import org.flintparticles.twoD.initializers.Velocity;
  import org.flintparticles.twoD.zones.LineZone;
  import org.flintparticles.twoD.zones.PointZone;
  import org.flintparticles.twoD.zones.RectangleZone;

  import flash.geom.Point;

  public class Snowfall extends Emitter2D
  {
    public function Snowfall()
    {
      counter = new Steady( 150 );
      
      addInitializer( new ImageClass( RadialDot, 2 ) );
      addInitializer( new Position( new LineZone( new Point( -5, -5 ), new Point( 605, -5 ) ) ) );
      addInitializer( new Velocity( new PointZone( new Point( 0, 65 ) ) ) );
      addInitializer( new ScaleImageInit( 0.75, 2 ) );

      addAction( new Move() );
      addAction( new DeathZone( new RectangleZone( -10, -10, 620, 420 ), true ) );
      addAction( new RandomDrift( 20, 20 ) );
    }
  }
}
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.*;

addChild( new SnowBackground() );

var emitter:Emitter2D = new Emitter2D();

emitter.counter = new Steady( 150 );

emitter.addInitializer( new ImageClass( RadialDot, 2 ) );
emitter.addInitializer( new Position( new LineZone( new Point( -5, -5 ), new Point( 605, -5 ) ) ) );
emitter.addInitializer( new Velocity( new PointZone( new Point( 0, 65 ) ) ) );
emitter.addInitializer( new ScaleImageInit( 0.75, 2 ) );

emitter.addAction( new Move() );
emitter.addAction( new DeathZone( new RectangleZone( -10, -10, 620, 420 ), true ) );
emitter.addAction( new RandomDrift( 20, 20 ) );

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

emitter.start();
emitter.runAhead( 10 );

addChild( new SnowForeground() );
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
  xmlns:mx="http://www.adobe.com/2006/mxml"
  xmlns:f="http://flintparticles.org/2009/flint2d"
  layout="absolute" width="600" height="400">
  
  <mx:Script>
    <![CDATA[
      import org.flintparticles.common.displayObjects.*;
    ]]>
  </mx:Script>

<mx:Image source="@Embed(source='assets/Snow_1.png')"/>
<f:DisplayObjectRenderer id="renderer" width="600" height="400">
  <f:emitters>
    <f:Emitter id="emitter" autoStart="true" runAheadTime="10">
      <f:counter>
        <f:Steady rate="150"/>
      </f:counter>
      <f:initializers>
        <f:Position>
          <f:LineZone startX="-5" startY="-5" endX="605" endY="-5"/>
        </f:Position>
        <f:Velocity>
          <f:PointZone x="0" y="65"/>
        </f:Velocity>
        <f:ImageClass imageClass="{RadialDot}" parameters="{[2]}"/>
        <f:ScaleImageInit minScale="0.75" maxScale="2"/>
      </f:initializers>
      <f:actions>
        <f:Move/>
        <f:DeathZone zoneIsSafe="true">
          <f:RectangleZone left="-10" right="620" top="-10" bottom="420"/>
        </f:DeathZone>
        <f:RandomDrift driftX="20" driftY="20"/>
      </f:actions>
    </f:Emitter>
  </f:emitters>
</f:DisplayObjectRenderer>
<mx:Image source="@Embed(source='assets/Snow_1_over.png')"/>
</mx:Application>