イベントによって、または手動で呼び出すことができるイベントリスナーを作成しようとしています。イベントによって呼び出された場合は、イベントリスナーを削除する必要があります。その他の場合-何かをするだけです。パラメータの数を決定するために(... 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!");
}
しかし、それはもう1つの機能です...