AS3 Hit тестовый массив несколько возвратов из логического - PullRequest
0 голосов
/ 09 марта 2011

Я хочу проверить, поражает ли мой персонаж какой-либо из элементов в массиве (true) и нет (false). прямо сейчас логическое значение находится в цикле for, поэтому оно возвращает один «true» и несколько «false» операторов при каждом обновлении программы. Я просто хочу одно возвращение: true, если персонаж попадает в клип в массиве, и false, если он не работает. Вот код:

for(var i:int = 0; i<steps.length; i++){
            if(steps[i].hitTestPoint(hero.x,hero.y+hHeight/2, true)){
                onSteps = true;
            }else{
                onSteps = false;
            }   
}

Ответы [ 3 ]

0 голосов
/ 09 марта 2011

Я думаю, что вам нужна функция, которая проходит через массив шагов и затем возвращает true, как только вы нажмете.Если никто не нажал, по умолчанию возвращается «ложь».

function checkForHits():Boolean {
    for(var i:int = 0; i<steps.length; i++){
        if(steps[i].hitTestPoint(hero.x,hero.y+hHeight/2, true)){
            return true;
        }
    }
    return false;
}
0 голосов
/ 09 марта 2011

У объекта Array уже есть метод

some(callback:Function, thisObject:* = null):Boolean

, который возвращает true в случае, если любой элемент Array удовлетворяет функции обратного вызова, и false в случае, если no элемент Array удовлетворяет функции обратного вызова.

Вот документы: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html#some()

Ваш код будет выглядеть примерно так:

onSteps = steps.some(function (item:*, index:int, array:Array):Boolean
            {
               return item.hitTestPoint(hero.x,hero.y+hHeight/2, true);
            });
0 голосов
/ 09 марта 2011
...