"игровой" цикл во флэш-виртуальном пруду - PullRequest
1 голос
/ 05 июля 2011

У меня проблемы с созданием цикла "игра" в моем виртуальном пруду as3. В настоящее время у меня есть следующий цикл enter_frame.в моем родительском контейнере "pond" будет произвольное количество объектов "fish" и объектов "food pellet".в настоящее время в моей функции цикла, когда два или более корма находятся на небольшом расстоянии от рыбы, рыба не будет двигаться, кто-нибудь знает, почему это происходит?

приведенный ниже код принадлежит моему классу "Рыба", 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 Ответ

3 голосов
/ 05 июля 2011

То, что у вас здесь есть, проходит по массиву продуктов питания, и для каждого элемента в этом массиве он будет вызывать '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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...