Удалить eventListener, не работающий с кнопками AS3 - Flash

Я пытаюсь удалить 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 ответ

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

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

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);

licensed under cc by-sa 3.0 with attribution.