для каждой петли в Adobe Flash - PullRequest
1 голос
/ 04 июля 2011

C: \ Users \ ifcdu1 \ Desktop \ MTWater \ src \ Fish.as: 87: 1067: неявное приведение значения типа String к несвязанному типу Food.

может кто-нибудь сказать мне, почему яя получаю эту ошибку?я пытаюсь получить доступ к значениям x, y объекта типа Food в моем массиве, который содержит объекты food

public function loop(e:Event):void
{
    if(foodInPond > 0)
    {
        var foodArray:Array = foodDroppedArray;
        for (var i:Food in foodDroppedArray);
        {
            if (getDistance(this.x - foodDroppedArray[i].x , this.y - foodDroppedArray[i].y) < 100)
            {
                if(!i.eaten)
                {
                    moveToFood(newFood);
                }
                else if (i.eaten)
                {
                    updatePosition();
                }
            }
            else
            {
                updatePosition();
            }
        }

    }
    else
    {
        updatePosition();
    }
}

Ответы [ 3 ]

2 голосов
/ 04 июля 2011

Циклу «для каждого» нужна часть «каждая», и не стоит ставить точку с запятой (;) в конце строки.Так должно выглядеть так:

for each (var i:Food in foodDroppedArray)
{
    if (getDistance(this.x - foodDroppedArray[i].x , this.y - foodDroppedArray[i].y) < 100)
    {
        if(!i.eaten)
        {
            moveToFood(newFood);
        }
        else if (i.eaten)
        {
            updatePosition();
        }
    }
    else
    {
        updatePosition();
    }
}
1 голос
/ 04 июля 2011
for each(var i:Food in foodDroppedArray)
{
    if(getDistance(this.x - i.x , this.y - i.y) < 100)
    {
        if(!i.eaten)
            moveToFood(newFood);
        else if(i.eaten)
            updatePosition();
        else
            updatePosition();
    }
}

Вы забыли добавить ключевое слово each после for. Также у вас изначально было:

if(getDistance(this.x - foodDroppedArray[i].x , this.y - foodDroppedArray[i].y) < 100)

foodDroppedArray[i] был бы здесь недействительным (нулевым), вам просто нужно использовать i, как вы это делали в последних частях цикла.

0 голосов
/ 04 июля 2011

Вам просто не хватает each:

                for each (var i:Food in foodDroppedArray);

В ActionScript есть три цикла for, for, for..in и for each..in.Первый проходит через счетчик.Вторая перебирает ключи объекта.Последние перебирают значения в коллекции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...