Stardust 参考

import idv.cjcat.stardust.common.actions.*;

import idv.cjcat.stardust.common.clocks.*;

import idv.cjcat.stardust.common.initializers.*;

import idv.cjcat.stardust.common.math.*;

import idv.cjcat.stardust.twoD.actions.*;

import idv.cjcat.stardust.twoD.emitters.*;

import idv.cjcat.stardust.twoD.initializers.*;

import idv.cjcat.stardust.twoD.renderers.*;

import idv.cjcat.stardust.twoD.zones.*;

//Emitter2D.addInitializer(初期設定)

//(1)Clockを作る…パーティクル発生の頻度

//(2)Emitterを作ってclockをセット…エミッターって発生装置みたいなもの(?)

var emitter:Emitter2D = new Emitter2D(new SteadyClock(1));

var sprite:Sprite = new Sprite();

addChild(sprite);

//(3)Rendererを作る…画面表示用オブジェクト(?)

//(4)Renderer.addEmitter( Emitter )でエミッターをレンダラーにセット

//(5)Emitter.addInitializer( 発生場所とか発生させるspiteとか )でエミッターを初期設定

var renderer:DisplayObjectRenderer = new DisplayObjectRenderer(sprite);

renderer.addEmitter(emitter);

//パーティクル自身のクラスを指定(雨粒とか点とかを作るクラス)

var displayObjectClass:DisplayObjectClass = new DisplayObjectClass(RainDrop);

emitter.addInitializer(displayObjectClass);

// パーティクルの発生するエリアを指定→idv.cjcat.stardust.twoD.zones2DのZoneクラス)CircleZone,Line,RectZone,SectorZone,SinglePoint,LazySectorZoneなど

var position:Position = new Position(new Line(0, 0, 600, 0));

emitter.addInitializer(position);

//パーティクルの速度(?)を指定→idv.cjcat.stardust.twoD.zones 2DのZoneクラス)CircleZone,Line,RectZone,SectorZone,SinglePoint,LazySectorZoneなど

var velocity:Velocity = new Velocity(new LazySectorZone(1, 5));

emitter.addInitializer(velocity);

//パーティクルの固まり具合(?)の範囲

var mass:Mass = new Mass(new UniformRandom(1, 10));

emitter.addInitializer(mass);

// パーティクルの不透明度の範囲

var alpharr:Alpha = new Alpha(new UniformRandom(0.2, 1));

emitter.addInitializer(alpharr);

//パーティクルの寿命の範囲

var life:Life = new Life(new UniformRandom(2, 3));

emitter.addInitializer(life);

// パーティクルの粒の大きさの範囲

var scale:Scale = new Scale(new UniformRandom(0.01, 1));

emitter.addInitializer(scale);

//パーティクルの動く角度の範囲

var rotationn:Rotation = new Rotation(new UniformRandom(5,5));

emitter.addInitializer(rotationn);

//オメガって何ですか?角速度?

var omega:Omega = new Omega(new UniformRandom(5,5));

emitter.addInitializer(omega);

//Emitter2D.addAction(アクション)

//(6)Emitter.addAction( 寿命の長さとか重力とか )で実際の動きを設定

//パーティクルの動きを増幅する。例えば2にすれば同じ速度で2回動く(?)

var move:Move = new Move();

emitter.addAction(move);

//範囲指定x:0~1000,y:0~600

var deathZone:DeathZone = new DeathZone(new RectZone(0, 0, 1000, 600), true);

emitter.addAction(deathZone);

//ランダムな加速をさせる

var randomDrift:RandomDrift = new RandomDrift(2);

emitter.addAction(randomDrift);

//Fieldオブジェクトに対して重力をかける

var gravity:Gravity = new Gravity();

emitter.addAction(gravity);

//角速度omegaに対して回転数を指定

var spin:Spin = new Spin(5);

emitter.addAction(spin);

//???

var explode:Explode = new Explode(0,0,300,300);

emitter.addAction(explode);

//???

var spawn:Spawn = new Spawn();

emitter.addAction(spawn);

//(7)Event.ENTER_FRAMEやTimerEvent.TIMERに、Emitter.step()を関連づけて表示を更新

stage.addEventListener(MouseEvent.MOUSE_DOWN, downHandler);

function downHandler(e){

addEventListener(Event.ENTER_FRAME, emitter.step);

}

//参考サイト http://blog.rainyday.jp/flash/pv3d/stardust5.html

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です