0

皆さん、

私は、Flex のイベント処理とディスパッチのメカニズムに疑問を持っていました。

下の図を考えてみましょう。

両方のパネル、つまりPanel1Panel2は同じアプリケーションの下にあります。

ここに画像の説明を入力

ボタンをクリックするとイベントをディスパッチし、Sendボタンにイベントリスナーを追加してそのイベントをリッスンできるようにしReceiveます。

どうやってやるの ?

PS:以来、私の知る限り、イベントは Parent Hierarchy 上dispatchEventにのみディスパッチされます。そうですか?

ありがとう。

4

4 に答える 4

2

いいえ、できません。しかし、あまり多くの依存関係を追加することなく、ビューまたはコンポーネントにまたがるイベントを本当に処理したい場合は、Parsley などのフレームワークとそのメッセージング機能を利用することをお勧めします。

http://www.spicefactory.org/parsley/

于 2011-11-22T03:31:08.527 に答える
0

できません。イベントはコンポーネントから発生し、上向き (子から親) にバブルしますが、下向き (親から子) または横向き (兄弟から兄弟) にはバブルしません。

代わりに、親アプリケーションにイベント リスナーを配置することもできます。これは、パネル 1 からイベントを受け取ると、パネル 2 の関数を呼び出します。

于 2011-11-22T06:13:58.967 に答える
0

受信ボタンにイベントリスナーを追加する

ここに何か問題があります。ボタン コードにイベント リスナーを追加しますか? カスタムボタンですか?その場合でも、ボタンはイベントを処理するべきではありません。それは、独自のクリック イベントをディスパッチする単純なビルディング ブロックであり、他には関係ありません。
あなたが本当に必要としているのは、あるコンポーネントに別のアクティビティを通知することです。kyohiro が提案するように「パセリを使用」するか、次のように独自のコネクタを作成できます。

public class MessageBus extends EventDispatcher {
    //singleton facility
    private static _instance:MessageBus;

    public static get instance():MessageBus {
        if (!_instance) _instance = new MessageBus();
        return _instance;
    }
}

次に、この MessageBus を使用してイベント リスナーを追加し (Panel2)、それを介してイベントをディスパッチします (Panel1)。このように、Panel1 は Panel2 を認識せず、両方の MessageBus のみを認識します。したがって、2 つのコンポーネントを接続するには、イベントごとに一意の String 定数のみが必要です。

于 2011-11-22T06:15:10.353 に答える