我正在尝试删除按钮上的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。但您可以根据需要多次按下按钮。
答案 0 :(得分:4)
如果要删除事件侦听器,则无法使用匿名函数添加它们。
使用与匿名函数相同的函数创建一个包装函数,你会没事的。
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);