如何使用快捷方式自动打开菜单?

时间:2010-03-24 06:23:58

标签: flex popup keyboard-shortcuts menubar

我有一个MenuBar,其中包含一般菜单项,如文件,视图,工具,帮助。 我在每个菜单项中都有子项。 问题是,当我按Alt + f键时,我想自动打开“文件”菜单。 我可以捕获视图上的关键事件。

但是如何打开MenuBar的文件菜单(需要从MenuBar类调用哪些函数来弹出那些子菜单项)? 我在谷歌搜索了一些信息..但是cudnt找到了。 或者,如果你有任何更好的解决方案或示例..plz发布它。

<root>
    <menuitem label="File">
        <menuitem label="New" enabled="false"/>
        <menuitem label="Open.." enabled="false"/>
        <menuitem label="Save" enabled="false"/>
        <menuitem label="Restore" enabled="false"/>
        <menuitem label="Print" enabled="true"/> 
        <menuitem type="seperator" enabled="false"/> 
        <menuitem label="Exit" enabled="true"/>    
    </menuitem> 
    <menuitem label="View" accesskey="v">
        <menuitem label="Zoom In" enabled="true" maxValue="200"/>
        <menuitem label="Zoom Out" enabled="true" maxValue="25"/>
    </menuitem>       
    <menuitem label="Tools" enabled="false">
        <menuitem label="item1" enabled="false"/>
        <menuitem label="item2" enabled="false"/>
    </menuitem> 

</root>

提前致谢:)

Sriss

3 个答案:

答案 0 :(得分:1)

要在其位置打开菜单:

var fileMenu:Menu = mnuBar.getMenuAt(0);
pnt : Point = new Point(mnuBar.x,mnuBar.y + mnuBar.height);
pnt = localToGlobal(pnt);
fileMenu.show(pnt.x,pnt.y);  

答案 1 :(得分:0)

我解决了它:)

var fileMenu:Menu = myMenuBar.getMenuAt(0);

fileMenu.show();

它有效,但现在问题是..子菜单弹出应用程序的(0,0)位置而不是文件菜单项.. !!!

答案 2 :(得分:0)

这是假的菜单!

更好的方法是:

e.preventDefault();     // will play against pressed ESC, too
menuBar.setFocus();
menuBar.dispatchEvent(new KeyboardEvent(KeyboardEvent.KEY_DOWN, false, false, 0, Keyboard.RIGHT));