0

プログラミング初心者なので、ご容赦ください。

私はネイバークラスを持っています。別のクラスでは、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;               
}
4

0 に答える 0