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)
但我可能完全离开了.