Можно e.target использовать для кнопки - PullRequest
0 голосов
/ 22 октября 2010

Вместо назначения каждой кнопке с помощью MouseEvent, я назначаю приложению AIR:

private function init():void {
  this.addEventListener(MouseEvent.MOUSE_DOWN,mpressKey);
}

Однако я хочу, чтобы mouse_down выполнялся только в том случае, если вместо Demo0.WindowedApplicationSkin2.Group3.contentGroup.g4 обнаруживается свойство "button"(g4 - это идентификатор).

Ответы [ 2 ]

2 голосов
/ 22 октября 2010

Не полагайтесь на 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 и, таким образом, вы не можете использовать его в качестве единой функции для обработки их всех.

1 голос
/ 22 октября 2010

Вы спрашиваете, как проверить, является ли цель кнопкой или определенной кнопкой?

Если это кнопка

if ( e.target is Button ) { ... }

или это определенная кнопка

if ( e.target == myButton ) { ... }
...