删除eventListener不能处理按钮AS3 - Flash

时间:2012-02-28 16:53:12

标签: actionscript-3 flash button addeventlistener event-listener

我正在尝试删除按钮上的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 个答案:

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