闪光虚拟池塘中的“游戏”循环

时间:2011-07-05 08:24:00

标签: flash actionscript-3

我在我的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();
            }

        }

1 个答案:

答案 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();
}