我是Flex的新手。我的问题是如何在组件之间调度事件?据我所知,Flex只会向自己或其父级发送事件。
我遇到这种情况:
<mx:Application>
<com:Component1 id="comp1" />
<com:Component2 id="comp2" />
</mx:Application>
在Component2.mxml中 我还有两个名为A和B的组件
我希望comp1使用参数调度一个Event,根据参数可以对comp2中的A和B进行一些更改。如何才能在comp2中获取事件?我知道Cairngorm会有所作为,但我不知道我现在想用它。可以有人帮我一把吗?非常感谢!
最佳,硕
答案 0 :(得分:3)
如果应用程序触发冒泡事件,它将通过整个层次结构,comp1和comp2以及它们各自的子项传递。 Comp1应该包含元数据:
[Event(name="someEvent", type="flash.events.Event")]
现在,当comp1调度该事件时,它将在父类中处理,如:
<com:Component1 id="comp1" someEvent="this.dispatchEvent(event,true)"/>
像继电器一样。
我认为最好使用适当的MVC结构来处理它,例如Robotlegs,mate,swiz,PureMVC等。
答案 1 :(得分:0)
<mx:Application>
<com:Component1 id="comp1" click="comp2.handleComp1Click()"/>
<com:Component2 id="comp2" click="comp1.handleComp2Click()"/>
</mx:Application>
那是非常原油,但这就是你可以做到的。对于更复杂的情况,在应用程序级别编写一个函数(或多个函数),让它们处理事件,然后将您需要的内容传播给子代。在您的示例中,您需要在应用程序级别执行某些操作。
是的,适当的架构可能更好。