Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 删除AS3中anon函数的EventListener_Actionscript 3_Addeventlistener - Fatal编程技术网

Actionscript 3 删除AS3中anon函数的EventListener

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.

我需要禁用onClick操作,直到动画停止。动画可以通过4个不同的按钮启动-所有按钮都需要停用

我使用侦听器将参数传递给将启动动画的函数,这就是为什么我在添加侦听器中使用匿名函数的原因:

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