Actionscript 3 删除AS3中anon函数的EventListener
我需要禁用onClick操作,直到动画停止。动画可以通过4个不同的按钮启动-所有按钮都需要停用 我使用侦听器将参数传递给将启动动画的函数,这就是为什么我在添加侦听器中使用匿名函数的原因:Actionscript 3 删除AS3中anon函数的EventListener,actionscript-3,addeventlistener,Actionscript 3,Addeventlistener,我需要禁用onClick操作,直到动画停止。动画可以通过4个不同的按钮启动-所有按钮都需要停用 我使用侦听器将参数传递给将启动动画的函数,这就是为什么我在添加侦听器中使用匿名函数的原因: up.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void { revealSpinner(event,51.42,1,spinner); event.currentTarget.
up.addEventListener(MouseEvent.CLICK,
function(event:MouseEvent):void
{
revealSpinner(event,51.42,1,spinner);
event.currentTarget.removeEventListener(event.type, arguments.callee);
},
false, 0, true);
我还有一个自调用的remove listener,但实际上我需要从其他3个按钮中删除该listener
我也尝试过命名匿名函数,但没有成功:
up.addEventListener(MouseEvent.CLICK,
myFunc = function(event:MouseEvent):void
{
revealSpinner(event,51.42,1,spinner);
},
false, 0, true);
// somewhere else in my app
up.removeEventListener(MouseEvent.CLICK, myFunc );
编辑:
4个按钮中的每一个都必须向RevelsPinner()方法传递不同的参数
revealSpinner(事件,51.42,1,旋转器);
revealSpinner(事件,51.42,-1,旋转器);
revealSpinner(事件,120,1,无热);
revealSpinner(事件,120,-1,无热) 不要使用匿名函数。如果为每个按钮定义一个处理程序,您仍然可以传递自定义参数,但您将拥有一个正确定义的侦听器,可以在任何时候删除该侦听器:
up.addEventListener(MouseEvent.CLICK, upButtonHandler, false, 0, true);
function upButtonHandler(event:MouseEvent):void
{
revealSpinner(event,51.42,1,spinner);
up.removeEventListener(MouseEvent.CLICK, upButtonHandler);
}
down.addEventListener(MouseEvent.CLICK, downButtonHandler, false, 0, true);
function downButtonHandler(event:MouseEvent):void
{
revealSpinner(event,999.999,999,spinner);
down.removeEventListener(MouseEvent.CLICK, downButtonHandler);
}
您可以在回调函数中使用event.currentTarget参数,如前所示。只需使用switch语句根据调用函数的方式设置参数:
function setupButtons()
{
...
this.up.addEventListener(MouseEvent.CLICK, cbButtonClick, false, 0, true );
this.down.addEventListener(MouseEvent.CLICK, cbButtonClick, false, 0, true );
}
function cbButtonClick( event:MouseEvent ):void
{
switch( event.currentTarget )
{
case this.up:
revealSpinner(event,51.42,1,spinner);
break;
case this.down:
revealSpinner(event,999999,1,spinner);
break;
}
event.currentTarget.removeEventListener(event.type, cbButtonClick);
}