Использование массивов и hitTest - AS3

Из того, что мой друг сказал мне, это должно работать, но это не так.

var P2hb:Array = new Array(P2char1, P2char2, P2char3);
var P2life:Number = 0;  

addEventListener(Event.ENTER_FRAME, framecheck)
function framecheck(event:Event):void
{
if (P2hb.hitTestObject(P1attack)) { P2life-=2; }
}

Это общий код, но он такой же, как у меня. В основном все элементы в P2hb видеоклипы на сцене. Я хочу сказать, что если P1attack поражает любой из объектов в массиве, затем P2life упадет на 2, без необходимости набирать hitTestObject() для каждого отдельного объекта.
Я не могу заставить его работать. Может кто-нибудь сказать мне, что я делаю не так?
Заранее спасибо.

1 ответ

Решение

Просто переберите каждый отдельный "movieClip" в массиве (используя for например, цикл) и проверьте наличие столкновения с вашим другим объектом:

function framecheck(event:Event):void
{
    for each (var enemy in P2hb) {
        if (enemy.hitTestObject(P1attack)) {
            P2life-=2;
            trace("hit occurred! P2life: "+P2life);
        }
    }
}
Другие вопросы по тегам