2009-09-04 6 views
1

私はFlexの新機能です。コンポーネント間でイベントをディスパッチする方法は?私の知る限り、Flexはイベントをそれ自身またはその親に吹き飛ばします。Flexのコンポーネント間でイベントをディスパッチする方法は?

私はこのような状況にいる:

私はによると、二つの他の構成要素がAとB

私はCOMP1は、パラメータを使用してイベントを送出したいと呼ばれる必要がありComponent2.mxml で

<mx:Application> 
     <com:Component1 id="comp1" /> 
     <com:Component2 id="comp2" /> 
    </mx:Application> 

パラメータをcomp2でAとBに変更することができます。私はcomp2でイベントを得ることができますか?Cairngormは違いを生む可能性があると知っていますが、今は使用したくありません。ありがとう!

ベスト、アプリケーションがバブリングイベントが発生した場合、それは全体の階層、COMP1とCOMP2だけでなく、それぞれの子供を介して配信されます碩

答えて

0
<mx:Application> 
     <com:Component1 id="comp1" click="comp2.handleComp1Click()"/> 
     <com:Component2 id="comp2" click="comp1.handleComp2Click()"/> 
    </mx:Application> 

として適切なMVC構造でこれを処理する方がよいと思いますが、それはあなたがそれを行うことができる方法です。より複雑な場合は、アプリケーションレベルで関数を記述し、それらの関数でイベントを処理させ、必要なものを子に伝播させます。あなたの例では、アプリケーションレベルで何かをする必要があります。

はい、適切なアーキテクチャがおそらく優れています。

+0

ありがとう、グレン。あなたの解決策は実現可能です.Comp1はイベントをディスパッチし、イベントをリッスンするAppllicationレベルまでバブルし、そのハンドラをComp2のhandleComp1Handlerに向けます。 – Shuo

3

。 COMP1は、メタデータを運ぶ必要があります。リレーのように

<com:Component1 id="comp1" someEvent="this.dispatchEvent(event,true)"/> 

:COMP1は、イベントを送出する際

[Event(name="someEvent", type="flash.events.Event")] 

は今、それは次のように親に処理されます。

は、私はこのような非常にの粗だなどRobotlegs、メイト、期待外れ、PureMVCの、

+0

+1スウィズ:) –

+0

ありがとう、ジョエル!あなたは私に良いヒントをくれました。 – Shuo

関連する問題