Как прекратить срабатывание mouse_out при срабатывании щелчка мыши - PullRequest
2 голосов
/ 17 октября 2010

У меня есть кнопки с событиями mouse_over, mouse_out и CLICK.Но когда я нажимаю кнопку, я перехожу на другой кадр, и событие mouse_out пытается срабатыватьКак мне остановить это?

act1_btn.addEventListener(MouseEvent.CLICK, act1Pressed);    
act1_btn.addEventListener(MouseEvent.MOUSE_OVER, act1Over);
act1_btn.addEventListener(MouseEvent.MOUSE_OUT, act1Out);
act1_btn.addEventListener(Event.ENTER_FRAME, act1EnterFrame);



function act1Over(e:MouseEvent):void 
 {
  trace("over");
  act1Animating = true; 
  logo_1.visible = true;
  bubble.visible = true;
  txt1.visible = true;
 }

 function act1Out(e:MouseEvent):void 
 {
  act1Animating = false;
  logo_1.visible = false;
  bubble.visible = false;
  txt1.visible = false;
 }

 function act1EnterFrame(e:Event):void
 {
  if (act1Animating && e.target.scaleY < 1.1)
  {
   e.target.scaleY += 0.02;
   e.target.scaleX += 0.02;

  } 

  if (!act1Animating && e.target.scaleY > 1)
  {
   e.target.scaleY -= 0.02;
   e.target.scaleX -= 0.02;
  } 
 }

 function act1Pressed(e:MouseEvent):void 
 {
  trace("clicked");
  act1Animating = false;
  logo_1.visible = false;
  bubble.visible = false;
  txt1.visible = false;
  gotoAndStop(2);
 }

Ответы [ 3 ]

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

Может быть, неплохо было бы вместо этого дать ROLL_OVER и ROLL_OUT MouseEvent шанс.Они просто стреляют один раз, когда кто-то переворачивает объект или выкатывается вместо непрерывной стрельбы.

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

Вот два способа справиться с этим:

1) Назначьте только прослушиватель MOUSE_OUT в обработчике MOUSE_OVER, а затем удалите его после завершения обработчика MOUSE_OUT. То есть.,

function act1Over(e:MouseEvent):void {
  /* your code */
  act1_btn.addEventListener(MouseEvent.MOUSE_OUT, act1Out); 
}

function act1Out(e:MouseEvent):void {
  /* your code */
  act1_btn.removeEventListener(MouseEvent.MOUSE_OUT, act1Out); 
}

2) Используйте stopPropagation () в обработчике CLICK:

function act1Pressed(e:MouseEvent):void {
  /* your code */
  e.stopPropagation();
}

Кроме того, в будущем используйте теги кода для разметки вашего кода!

0 голосов
/ 17 октября 2010

Когда вы нажимаете кнопку, вы вызываете событие MouseOver & MouseOut. Если вы не хотите запускать событие MouseOut после события Click, вам следует удалить прослушиватель события MouseOut в прослушивателе события Click.

Это означает, что для того, чтобы при прослушивании MouseOver у вас был прослушиватель MouseOut, вы должны добавить прослушиватель MouseOut в прослушиватель MouseOver.

Наконец, вы должны удалить прослушиватель событий MouseOut внутри прослушивателя MouseOut.

...