我尝试编写事件侦听器,可以通过事件或手动调用。如果它被事件调用,我们必须删除事件监听器。在其他情况下 - 只是做点什么。我正在使用 (... args) 构造来确定参数的数量。但是当 Event 调用函数时,似乎 args 的类型已更改为 Object,因此我无法获取 args.target 和 args.type 字段。但是当我使用 (args:Event) 一切都很好。
private function smartErrListener(... args) {
// when function called by event
// args.length == 1
// args instanceof Event == false
// args is Event == false
// typeof(args) == 'object'
if (args.length == 1 && args instanceof Event) {
args.target.removeEventListener(Event.COMPLETE, OkListener);
args.target.removeEventListener(IOErrorEvent.IO_ERROR, smartErrListener);
}
trace("We've got an errors!");
}
有任何想法吗?
ps:当然可以做类似的事情
private function smartErrListener(e:Event) {
e.target.removeEventListener(Event.COMPLETE, OkListener);
e.target.removeEventListener(IOErrorEvent.IO_ERROR, smartErrListener);
this.errCallback();
}
private function errCallback() {
trace("We've got an errors!");
}
但它还有一个功能......