0
我試圖編寫事件監聽器,它可以通過事件或手動調用。在通過事件調用的情況下,我們必須刪除事件監聽器。在其他情況下 - 只需要做點什麼。我使用(... args)構造來確定參數的數量。但是,當由Event調用函數時,看起來類型的參數已更改爲Object,所以我無法獲取args.target和args.type字段。但是當我使用(參數:事件)一切都很好。函數參數中的事件或沒有任何內容。如何?
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:ofcourse有可能做這樣的事情
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!");
}
但它多了一個功能...
看起來棘手,但它的工作原理:)非常感謝! – Arkady
我同意,但正如我所說的「第二種方法(你的)方法沒有錯誤:)。 –