Skip to content

Instantly share code, notes, and snippets.

@wwwins
Created August 31, 2012 07:18
Show Gist options
  • Select an option

  • Save wwwins/3549836 to your computer and use it in GitHub Desktop.

Select an option

Save wwwins/3549836 to your computer and use it in GitHub Desktop.
flint snow effect
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Point;
import flash.geom.Rectangle;
import net.hires.debug.Stats;
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.RandomDrift;
import org.flintparticles.twoD.actions.DeathZone;
import org.flintparticles.twoD.actions.Move;
import org.flintparticles.twoD.emitters.Emitter2D;
import org.flintparticles.twoD.initializers.Position;
import org.flintparticles.twoD.initializers.Velocity;
import org.flintparticles.twoD.renderers.BitmapRenderer;
import org.flintparticles.twoD.renderers.DisplayObjectRenderer;
import org.flintparticles.twoD.renderers.PixelRenderer;
import org.flintparticles.twoD.zones.LineZone;
import org.flintparticles.twoD.zones.PointZone;
import org.flintparticles.twoD.zones.RectangleZone;
public class Main extends Sprite
{
private var emitter:Emitter2D;
public function Main():void
{
if (stage)
init();
else
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
// stats
addChild(new Stats);
// emiiter
emitter = new Emitter2D();
// counter,每秒產生 50 個粒子
emitter.counter = new Steady(50);
// particle init, set up the particle’s position, velocity, image, color, lifetime.
// image
var imageClass:ImageClass = new ImageClass(RadialDot, [2]);
emitter.addInitializer(imageClass);
// position
var position:Position = new Position(new LineZone(new Point(-5, -5), new Point(1005, -5)));
emitter.addInitializer(position);
// velocity,向下
var velocity:Velocity = new Velocity(new PointZone(new Point(0, 60)));
emitter.addInitializer(velocity);
// scale
var scaleImage:ScaleImageInit = new ScaleImageInit(0.75, 2);
emitter.addInitializer(scaleImage);
// action
emitter.addAction(new Move);
// random drift action
var rd:RandomDrift = new RandomDrift( 20, 20 )
emitter.addAction(rd);
// remove particle,進入 deadthZone 區域就移除粒子
var dzone:RectangleZone = new RectangleZone( -10, -10, 1020, 605 );
var deathZone:DeathZone = new DeathZone( dzone, true );
emitter.addAction( deathZone );
// render
var renderer:DisplayObjectRenderer = new DisplayObjectRenderer();
addChild(renderer);
renderer.addEmitter(emitter);
emitter.start();
// 快轉十秒,讓雪花先填滿螢幕
emitter.runAhead(10);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment