Flex:菜单栏,菜单点击

时间:2010-03-11 09:21:51

标签: flex menu click menubar

我不知道为什么但是我发现除非你点击一个子项目,否则菜单栏上的itemclick事件不会被触发。

处理顶层菜单项点击并且没有子菜单项的简洁方法是什么。

例如,我想在点击MenuItem 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>

3 个答案:

答案 0 :(得分:3)

猜猜这有用,

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>  

这里我还添加了一个属性'索引'。作为XML,除了一些关键字之外,我们可以在其中添加任何元素。

“ItemClick”事件将采用儿童,“点击”将处理顶级菜单栏物品(父母)。

希望这有帮助。

此致 普拉卡什

答案 1 :(得分:1)

此行为是设计使然。将其视为浏览器中的菜单栏:单击文件,编辑,查看等顶级项目只显示弹出窗口,它们不会触发任何操作。

来自livedocs page for MenuBar

  

MenuBar控件定义一个包含一个或多个菜单项的水平顶级菜单栏。单击顶级菜单项会打开一个弹出子菜单,该子菜单是Menu控件的一个实例。

     

MenuBar控件的顶级菜单栏通常始终可见。它不适合用作弹出菜单。当用户使用鼠标或键盘选择它们时,会弹出单个子菜单。

如果您必须在顶级项目点击上执行某些操作,请收听click上的MenuBar事件并遍历parent event.target链中搜索MenuBarItemMenuBar

的顶级项的默认项呈示器

答案 2 :(得分:0)

flex开箱即用的菜单栏有很多限制。例如我不能有嵌套的子菜单 顶部菜单       - 1级菜单                   级别2菜单                                级别3菜单..... 为了解决这个问题,需要在每个子菜单中添加一个额外的菜单,这确实很痛苦。