Не полагайтесь на event.target
, чтобы проверить, нажата ли кнопка или нет.Свойство target установлено для самого внутреннего элемента, по которому щелкнули.Когда вы нажимаете на кнопку, вы не всегда нажимаете на кнопку;возможно, вы щелкаете текстовое поле, в котором отображается метка, или фоновое изображение, если оно есть, или какую-либо другую дочернюю часть оформления и т. д. - target
будет установлен для этого внутреннего элемента.
Если вы хотите иметь обработчик одного нажатия для всех кнопок и предпринимать соответствующие действия на основе нажатой кнопки, вы можете назначить ту же функцию, что и обработчики для каждой кнопки, и проверить свойство event.currentTarget
;когда вызывается обработчик события, currentTarget
устанавливается для объекта, с которым был зарегистрирован этот обработчик.
btn1.addEventListener(MouseEvent.CLICK, clickHandler);
btn2.addEventListener(MouseEvent.CLICK, clickHandler);
btn3.addEventListener(MouseEvent.CLICK, clickHandler);
public function clickHandler(e:MouseEvent):void
{
if(e.currentTarget == btn1){
/* Handle btn1 here */
}
else if(e.currentTarget == btn2){
/* Handle btn1 here */
}
else if(e.currentTarget == btn3){
/* Handle btn1 here */
}
}
Когда вы добавляете один обработчик мыши, используя airApp.addEventListener
, currentTarget
всегда будетваш airApp
и, таким образом, вы не можете использовать его в качестве единой функции для обработки их всех.