所以我对编程很菜鸟,所以请多多包涵。
我有一个邻居类。在另一个类中,我实例化了 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;
}