Apache flex Flex:菜单栏,菜单单击
我不知道为什么,但我看到菜单栏上的itemclick事件不会被触发,除非您单击子项 处理菜单项点击的干净方法是什么?菜单项位于顶层,没有子菜单项 例如,我想在单击菜单项B时触发一个事件Apache flex Flex:菜单栏,菜单单击,apache-flex,menu,click,menubar,Apache Flex,Menu,Click,Menubar,我不知道为什么,但我看到菜单栏上的itemclick事件不会被触发,除非您单击子项 处理菜单项点击的干净方法是什么?菜单项位于顶层,没有子菜单项 例如,我想在单击菜单项B时触发一个事件 <?xml version="1.0"?> <!-- menus/MenuBarControl.mxml --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" > <mx:MenuBar id
<?xml version="1.0"?>
<!-- menus/MenuBarControl.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" >
<mx:MenuBar id="myMenuBar" labelField="@label" itemClick="{itemClick(event)}" >
<mx:XMLList>
<menuitem label="MenuItem A">
<menuitem label="SubMenuItem A-1"/>
<menuitem label="SubMenuItem A-2"/>
</menuitem>
<menuitem label="MenuItem B"/>
</mx:XMLList>
</mx:MenuBar>
</mx:Application>
这种行为是故意的。设想一下,如果它是浏览器中的菜单栏:单击顶级项目(如文件、编辑、视图等)只显示弹出窗口,它们不会触发任何操作 从
MenuBar
控件定义了一个包含一个或多个菜单项的水平顶级菜单栏。单击顶级菜单项将打开作为菜单控件实例的弹出子菜单
菜单栏
控件的顶级菜单栏通常始终可见。它不打算用作弹出菜单。当用户用鼠标或键盘选择单个子菜单时,会弹出相应的子菜单
如果您必须在顶级项目单击上执行某些操作,请收听
菜单栏上的单击事件
,并遍历事件的父项
链。目标
搜索菜单项
,flex提供的开箱即用菜单栏的顶级项的默认项呈现器有很多限制。例如,我不能有像这样的嵌套子菜单
顶部菜单
-一级菜单
-二级菜单
-三级菜单。。。。。
为了解决这个问题,我们需要在每个子菜单中添加一个额外的菜单,这确实很痛苦。我想这会有所帮助
protected function myMenuBar_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
stackIndex=event.target.data.@index;
}
protected function myMenuBar_itemClickHandler(event:MenuEvent):void
{
// TODO Auto-generated method stub
stackIndex=event.item.@index;
}
对于以下菜单栏
<mx:MenuBar id="myMenuBar" labelField="@label" click="myMenuBar_clickHandler(event)" itemClick="myMenuBar_itemClickHandler(event)" >
<mx:XMLList>
<menuitem label="MenuItem A" index="0">
<menuitem label="SubMenuItem A-1" index="0-0"/>
<menuitem label="SubMenuItem A-2" index="0-1"/>
</menuitem>
<menuitem label="MenuItem B" index="1"/>
</mx:XMLList>
</mx:MenuBar>
这里我还添加了一个属性“index”。作为XML,我们可以在其中添加除某些关键字之外的任何元素
“ItemClick”事件将处理子菜单项,“Click”将处理顶级菜单项(父菜单项)
希望这有帮助
问候,,
普拉卡什