0

イベントをリッスンしたいフレックスコンポーネントにコードがあります。イベントのソースは、別のクラスによって実行されている別のクラスによって実行されているカスタムクラスなどです。イベントが通過するという印象を受けました。アプリケーション全体を通して、そのようにクラスでカスタムイベントをディスパッチすることを望んでいました..

    private function finishEvent():void {
        var evt:EventDispatcher = new EventDispatcher;
        var finished:Event = new Event("finishedInterpret");
        evt.dispatchEvent(finished);
    }

次に、次のようにコンポーネントでそれを取得できます。

public function interpret(data:Array):void {
    addEventListener("finishedInterpret", applyInferences);
    db.executeBatch();
}

基本的に、executeBatch が終了し、finishEvent が呼び出されたときにイベントが発生しますが、リスナーは何も取得していません。db.addEventListener に設定してみましたが、効果がありました。

4

1 に答える 1

1

イベントが発生するはずの方法は、オブジェクトがイベントをディスパッチし、それらのイベントのコンシューマーがそのオブジェクトからのイベントをリッスンすることです。グローバル イベント ディスパッチャ (一般的ではない) を使用しない限り、アプリケーション全体のイベント ディスパッチはありません。

子コンポーネントがイベントをディスパッチし、それらの子の所有者がそれらのイベントをリッスンするという、これが使用するのに最適なパターンであることがわかりました。例えば:

child.addEventListener("finishedInterpret", applyInferences);

現状では、コードはそれ自体からのイベントをリッスンしています。

于 2011-03-29T22:51:43.333 に答える