AS3删除事件侦听器

Hoo*_*xer 2 flash event-handling actionscript-3 addeventlistener

我有一个关于在actionscript 3中手动删除事件监听器的基本问题.

如果我有这样的功能:

    private function doStuff(event : Event):void
    {

        //let them save
        var f:FileReference = new FileReference();
        f.addEventListener(Event.COMPLETE,saveDone);
        f.save(mp3Encoder.mp3Data,"output.mp3");

    }
Run Code Online (Sandbox Code Playgroud)

调用saveDone函数时如何删除事件侦听器?通常我只是将"添加"更改为"删除",如:

f.removeEventListener(Event.COMPLETE,saveDone);
Run Code Online (Sandbox Code Playgroud)

但是,f是一个局部变量,在doStuff函数结束后我无法访问它.

    private function saveDone(ev:Event){
        f.removeEventListener(Event.COMPLETE,saveDone);
    }
Run Code Online (Sandbox Code Playgroud)

小智 5

也许尝试通过事件的"目标"属性引用原始对象?我没有尝试过,但类似于:

private function saveDone(ev:Event){
var originalFR:FileReference = ev.target as FileReference;    
originalFR.removeEventListener(Event.COMPLETE, saveDone);
}
Run Code Online (Sandbox Code Playgroud)

但我可能完全离开了.