プログラミング初心者なので、ご容赦ください。
私はネイバークラスを持っています。別のクラスでは、Neighbor クラスの 3 つの個別のインスタンスをインスタンス化し、配列 (collisionArray_Neighbour) に格納します。Neighbor クラスには関数 (randomisePosition) があります。
問題は、randomisePosition() 関数が 1 つの Neighbor インスタンスによってのみ呼び出されることです。配列を使用してインスタンスを反復処理しますが、それぞれで Neighbor update() 関数を呼び出します。この更新関数は、randomisePosition() 関数を呼び出します。
ゲーム内のインスタンス、別のインスタンスと衝突することによって、randomisePosition() を呼び出す 1 つのインスタンスを配列から削除したかのように、配列が原因である可能性がありますが、それでも配列のうちの 1 つだけが関数 randomisePosition を呼び出します。
これは、インスタンスを配列に追加するコードです。
public function populateNeighbourCollisionArray()
{
for (var iN:int = 0; iN < enemyMaxAmount; iN++)
{
if (collisionArray_Neighbour.length < 3)
{
collisionArray_Neighbour.push(new Neighbour(this));
level01.addChild(collisionArray_Neighbour[collisionArray_Neighbour.length - 1]);
}
}
}
これにより、各インスタンスの更新関数が呼び出されます。
for (var i = 0; i < collisionArray_Neighbour.length; i++)
{
collisionArray_Neighbour[i].update();
}
Neighbor クラスの update 関数:
public function update()
{
if (animationComplete)
{
trace("randomise position...");
randomisePosition();
gotoAndPlay("startFading");
//startTimer();
}
}
1 つの Neighbor インスタンスでのみ呼び出されると思われる randomisePosition 関数:
private function randomisePosition()
{
trace("position randomised");
var randomX = Math.ceil(randomRange(0, 100));
var randomY = Math.ceil(randomRange(50, 400));
this.x = parentClassRef.player.x + randomX;
this.y = randomY;
}