如何在Flex中的组件之间调度事件?

时间:2009-09-04 11:16:53

标签: flex flex3

我是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会有所作为,但我不知道我现在想用它。可以有人帮我一把吗?非常感谢!

最佳,硕

2 个答案:

答案 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>

那是非常原油,但这就是你可以做到的。对于更复杂的情况,在应用程序级别编写一个函数(或多个函数),让它们处理事件,然后将您需要的内容传播给子代。在您的示例中,您需要在应用程序级别执行某些操作。

是的,适当的架构可能更好。