簡単な質問... EventListenerを関数にアタッチすることはできますか?関数の実行中のどの時点でもEventが送出されると、EventHandlerは起動されます。機能するEventListenerを追加しますか?
乾杯。
簡単な質問... EventListenerを関数にアタッチすることはできますか?関数の実行中のどの時点でもEventが送出されると、EventHandlerは起動されます。機能するEventListenerを追加しますか?
乾杯。
イベントリスナーは、EventDispatcherの下位クラスに属するオブジェクトにアタッチされます。それらを関数に割り当てることはできません。
あなたは単にあなたが、このようなイベントを送出し、それを聞くために、ステージを使用することができ、引数
function cb(s:String):void {
trace(s);
}
function doit(f:Function):void {
// do something
f("Hi");
// do some more stuff
}
doit(cb);
と関数参照(コールバック)を渡すことによって、これを達成することができます
stage.addEventListener("myFunctionWasCalled", callback);
myFunction();
public function callback(event:Event):void {
trace("callback executed");
}
public function myFunction():void {
stage.dispatchEvent(new Event("myFunctionWasCalled"));
}
場合必要に応じて関数呼び出しを追加したり削除したりするだけで、関数呼び出しの生涯でイベントを待ち受けるだけです。 例:
function somefunction():void{
someobject.addEventListener(Event, eventhandler);
... doing stuff
someobject.removeEventListener(Event, eventhandler);
}
さても、フローのあなたの選択は、道路を追跡することが非常に困難になることがありますが、これを行う場合に注意してください。
典型的なことは、オブジェクトの生死には本当に心配する必要がありますが、関数呼び出しの生死は対称です。
オブジェクトにイベントリスナーをアタッチするには、このオブジェクトにIEventDispatcher
インターフェイスを実装する必要があります。だからFunction
クラスを拡張し、あなたのメソッドを追加することができます。 AS3のドキュメントがFunction
が最終ではないことを言うが、AS3のコンパイルがそれに同意しない:VerifyError: Error #1103: Class Bla cannot extend final base class.
ので、短い答えは:あなたが機能にイベントリスナーをアタッチすることはできません。
しかし、それはすでにあなたは可能性が言及されたよう:
function bla(callback1:Function, callback2:Function):void
。Functor
クラスを作成し、IEventDispatcher
を実装することができます。このようにして、関数myFunctor.execute()
を呼び出して、ディスパッチされたイベントを取得できます。