0

所以我对编程很菜鸟,所以请多多包涵。

我有一个邻居类。在另一个类中,我实例化了 Neighbor 类的 3 个独立实例,存储到一个数组 (collisionArray_Neighbour) 中。Neighbor 类中有一个函数(randomisePosition)。

问题是:randomisePosition() 函数只被一个 Neighbor 实例调用。即使我使用数组遍历实例,也要在每个实例上调用 Neighbor update() 函数。此更新函数调用 randomisePosition() 函数。

这可能是由于数组的原因,就好像我从数组中删除了一个调用 randomisePosition() 的实例,通过与游戏中的一个实例碰撞,另一个实例,但仍然只有一个在数组中,调用函数 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 类中的更新函数:

public function update()
{
    if (animationComplete)
    {
        trace("randomise position...");
        randomisePosition();
        gotoAndPlay("startFading");
        //startTimer();
    }
}

似乎只在一个 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