Удалить eventListener не работает на кнопках AS3 - Flash - PullRequest
1 голос
/ 28 февраля 2012

Я пытаюсь удалить eventlisnter для кнопки, чтобы при нажатии кнопки анимация завершалась, прежде чем вы сможете снова нажать кнопку.Но, основываясь на моем коде ниже, вы можете нажимать кнопку столько раз, сколько захотите:

var LeftButt:MovieClip  = new left_button();
var RightButt:MovieClip  = new right_button();
var topClip:Sprite = new Sprite();
addChild(topClip);
     LeftButt.addEventListener(MouseEvent.MOUSE_UP, function(e){moveItems(e, "left");});
     RightButt.addEventListener(MouseEvent.MOUSE_UP, function(e){moveItems(e, "right");});  


function clothingApp(event:MouseEvent):void{
     topClip.addChild(RightButt);
     topClip.addChild(LeftButt);

}

function moveItems(event:MouseEvent, SlideDirection:String):void{

    LeftButt.removeEventListener(MouseEvent.MOUSE_UP, function(e){moveItems(e, "left");});
    RightButt.removeEventListener(MouseEvent.MOUSE_UP, function(e){moveItems(e, "right");});    

    trace(SlideDirection);
}

Так что технически этот код должен запускаться только один раз, потому что я никогда не настраивал eventListener снова.Но вы можете нажимать кнопки столько раз, сколько захотите.

1 Ответ

4 голосов
/ 28 февраля 2012

Если вы хотите удалить прослушиватели событий, вы не можете добавить их с помощью анонимных функций.

Создайте функцию-оболочку с теми же функциями, что и у вашей анонимной функции, и все будет в порядке.

function moveLeft(event:MouseEvent):void
{
    moveItems(event, "left");
}

function moveRight(event:MouseEvent):void
{
    moveItems(event, "right");
}


LeftButt.addEventListener(MouseEvent.MOUSE_UP, moveLeft);
RightButt.addEventListener(MouseEvent.MOUSE_UP, moveRight);   

LeftButt.removeEventListener(MouseEvent.MOUSE_UP, moveLeft);
RightButt.removeEventListener(MouseEvent.MOUSE_UP, moveRight);  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...