我在我的flash中设计“游戏”循环时遇到麻烦as3虚拟池塘目前我有以下enter_frame循环。在我的“池塘”父容器中,会有任意数量的“鱼”物和“食物颗粒”物。目前在我的循环功能当两个或更多的食物放置在鱼的近距离,鱼不会移动有谁知道为什么会发生这种情况?
下面的代码在我的“Fish”类中,updatePosition()只是告诉鱼像鱼一样游来游去。
public function loop(e:Event):void
{
//getDistance(this.x - i.x, this.y - i.y)
if(foodDroppedArray.length > 0)
{
for each (var i:Food in foodDroppedArray)
{
if (getDistance(this.x - i.x, this.y - i.y) < 100)
{
this.moveToFood(i);
}else {
updatePosition();
}
}
}else
{
updatePosition();
}
}
答案 0 :(得分:3)
你在这里循环通过食物数组,对于该数组中的每个项目,它将根据距离条件调用'moveToFood'或'updatePosition'。据推测,这两个函数都可以控制运动,因此它们可能相互作用,在这种情况下,您只能看到输出循环的最后结果。
您可能想要在发现合适的食物时打破循环,并且只有在没有符合您条件的食物项目时才调用updatePosition。
if(foodDroppedArray.length > 0)
{
for each (var i:Food in foodDroppedArray)
{
if (getDistance(this.x - i.x, this.y - i.y) < 100)
{
this.moveToFood(i);
return;
}
}
//this only calls when no food matches the condition
updatePosition();
} else {
updatePosition();
}