Flash AS3 雪を降らせる効果
FlashのAction Scriptだけで簡単に雪を降らせてみましょう!
何も描画する必要はありません。
Flint Particle Systemというオープンソースのライブラリを使います。
パーティクル、とはこういう形のない粉というか、粉末というか、破片のようなものをいうそうです。
開発者のRichard Lordさん(スキンヘッド)に感謝!
- 上記 Flint Particle System からソースコードをダウンロードします。
http://code.google.com/p/flint-particle-system/downloads/list
- 解凍してできるorgというディレクトリにFlashのクラスパスを通しましょう。
- 500×400ピクセルで背景が黒(背景が白だと雪が降ってもわからない)のFlaファイルを作成します。
- 最初のフレームに、次のように書きます。
import flash.geom.Point; 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 emitter:Emitter2D = new Emitter2D(); var renderer:DisplayObjectRenderer = new DisplayObjectRenderer(); addChild( renderer ); renderer.addEmitter( emitter ); emitter.counter = new Steady( 100 ); emitter.addInitializer( new ImageClass( RadialDot, 2 ) ); emitter.addInitializer( new Position( new LineZone( new Point( -5, -5 ), new Point( 505, -5 ) ) ) ); emitter.addInitializer( new Velocity( new PointZone( new Point( 0, 65 ) ) ) ); emitter.addAction( new Move() ); var scaleImage:ScaleImageInit = new ScaleImageInit( 0.75, 2 ); emitter.addInitializer( scaleImage ); var drift:RandomDrift = new RandomDrift( 15, 15 ); emitter.addAction( drift ); emitter.start();
Ctrl+Enterでムービーを見てみましょう。
できあがりのイメージと、上記スクリプトの解説は下記のサイトをよく読んでください。
http://flintparticles.org/tutorials/snowfall