Как определить, к какому классу относится экземпляр во флэш-памяти (as3)

Я относительно новичок во Flash и пытаюсь сделать небольшую игру. Для этого мне нужно определить, нажал ли игрок на самолет или птицу.

Я порождаю их с помощью addChild, и генерируется имя каждого экземпляра. Eventlistener присоединен к экземпляру.

Я пытался обнаружить это так, но это не сработало. Он обнаруживает щелчок (он печатает снимок: экземпляр, но не команды трассировки в if), но не был нажат.

function shoot(e: MouseEvent): void {
    trace("shot: "+ e.target.name);
    if (e.target is Plane) {
        trace("shot plane");
        e.target.parent.removeChild(e.target);
        gotoAndStop(3);
    }
    if (e.target == Bird) {
        trace("shot bird");
        score += 1;
        e.target.parent.removeChild();
    }
}

У кого-нибудь есть совет?

1 ответ

Решение

Попробуйте использовать e.currentTarget скорее, чем e.target,

if (e.currentTarget is Plane) {
    ...
}
if (e.currentTarget is Bird) {
    ...
}

Текущая цель события - это ссылка на элемент, к которому вы добавили прослушиватель событий. С другой стороны, целью является фактически выбранный элемент (который может совпадать с текущим объектом или его дочерним / дочерним объектом).

Ты можешь использовать getQualifiedClassName проверить тип объекта:

trace(flash.utils.getQualifiedClassName(e.currentTarget));
Другие вопросы по тегам