次のコードは、(bloodyParticle のその場で作成されたプロパティに) forceX と forceY に乱数を割り当てようとしています。しかし問題は、作成される 3 つのインスタンスすべてで乱数が同じであることです。
for(var k:int = 0; k<3; k++)
{
var bloodyParticle:BloodyParticle = new BloodyParticle();
bloodyParticle.forceX = Math.random() * 20 - 10;
bloodyParticle.forceY = Math.random() * -20 + 10;
bloodyParticle.addEventListener(Event.ENTER_FRAME, bloodyParticleLoop);
bloodyParticle.x = bloodyPoint.x;
bloodyParticle.y = bloodyPoint.y;
}
コメントに従って、これが私がそれらを使用する方法です
private function bloodyParticleLoop(e:Event)
{
bloodyBmd.fillRect(bloodyBmd.rect, 0);
bloodyBmd.draw(MovieClip(e.target),MovieClip(e.target).transform.matrix);
//tried e.target also
e.target.x += e.target.forceX;
e.target.y += e.target.forceY;
e.target.forceY++;
}
forceX と forceY の getter/setter は以前は存在しませんでしたが、クラス内に作成したところ、次のようになりました。
パッケージ {
import flash.display.MovieClip;
public class BloodyParticle extends MovieClip
{
public var forceX:Number;
public var forceY:Number;
public function BloodyParticle()
{
forceX = Math.random() * 20 - 5; //cz i hav the random number here-
forceY = Math.random() * -20 + 10;//-i commented the earlier
//-initialization of forceX/Y
}
}
}