我在Flex的主应用程序中有一个菜单栏和一个自定义组件。单击菜单栏中的菜单项时,我需要引发一个自定义事件,该事件也可以由自定义组件监听。或者它也可以是菜单事件,在选择其中一个菜单项时引发。我怎么能做到这一点?
如果我没有错,菜单项click事件将从菜单栏传播到应用程序(在冒泡阶段),并且不会转到自己的兄弟组件。
示例代码:
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:code="http://code.google.com/p/flexlib/" >
<fx:Script>
<![CDATA[
protected function menuBar_itemClickHandler(event:MenuEvent):void
{
if(event.item.@label=='New File'){
//I dont want to write code like
// mainTab.someProperty= someproperty
//Instead if this event or other custom event
//be raised which could be listened by the custom
//component and the listener could be written in the
//component itself
}
}
]]>
</fx:Script>
<mx:MenuBar id="menuBar"
labelField="@label"
showRoot="false"
width="100%" height="4%"
horizontalCenter="0" verticalCenter="0"
itemClick="menuBar_itemClickHandler(event)">
<mx:dataProvider>
<fx:XML>
<root>
<parent label="File">
<node label="New File" />
<node label="Load" />
<node label="Save" />
<node label="Exit" />
</parent>
</root>
</fx:XML>
</mx:dataProvider>
</mx:MenuBar>
<code:MDICanvas width="100%" height="95%">
<!-- MY CUSTOM COMPONENT -->
<local:MainTab id="mainTab" width="100%" height="100%" />
</code:MDICanvas>
</s:Application>
答案 0 :(得分:0)
使用诸如欧芹,swiz,机器人腿之类的应用程序框架来轻松实现这一目标。 您可以在任何范围内收听和传播事件。