Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flex:菜单栏,菜单单击_Apache Flex_Menu_Click_Menubar - Fatal编程技术网

Apache flex Flex:菜单栏,菜单单击

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

我不知道为什么,但我看到菜单栏上的itemclick事件不会被触发,除非您单击子项

处理菜单项点击的干净方法是什么?菜单项位于顶层,没有子菜单项

例如,我想在单击菜单项B时触发一个事件

<?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”将处理顶级菜单项(父菜单项)

希望这有帮助

问候,, 普拉卡什