处理菜单事件

Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本

当用户选择菜单时,或用户选择菜单项时,菜单将调度事件。

菜单类的事件摘要

将事件侦听器添加到菜单或个别项目来处理菜单事件。

Object

调度的事件

NativeMenu (AIR)

Event.PREPARING(Adobe AIR 2.6 和更高版本)

Event.DISPLAYING

Event.SELECT(从子项目和子菜单传播)

NativeMenuItem (AIR)

Event.PREPARING(Adobe AIR 2.6 和更高版本)

Event.SELECT

Event.DISPLAYING(从父菜单传播)

选择菜单事件

若要处理菜单项上的单击,请将 select 事件的事件侦听器添加到 NativeMenuItem 对象:

var menuCommandX = new NativeMenuItem("Command X"); 
menuCommand.addEventListener(air.Event.SELECT, doCommandX)

因为 select 事件会上升到包含菜单,所以还可以在父菜单上侦听 select 事件。在菜单级别上侦听时,可以使用事件对象的 target 属性来确定选择了哪个菜单命令。以下示例跟踪所选命令的标签:

var colorMenuItem = new air.NativeMenuItem("Choose a color"); 
var colorMenu = new air.NativeMenu(); 
colorMenuItem.submenu = colorMenu; 
 
var red = new air.NativeMenuItem("Red"); 
var green = new air.NativeMenuItem("Green"); 
var blue = new air.NativeMenuItem("Blue"); 
colorMenu.addItem(red); 
colorMenu.addItem(green); 
colorMenu.addItem(blue); 
 
if(air.NativeApplication.supportsMenu){ 
    air.NativeApplication.nativeApplication.menu.addItem(colorMenuItem); 
    air.NativeApplication.nativeApplication.menu.addEventListener(air.Event.SELECT, 
                                                                colorChoice); 
} else if (air.NativeWindow.supportsMenu){ 
    var windowMenu = new air.NativeMenu(); 
    window.nativeWindow.menu = windowMenu; 
    windowMenu.addItem(colorMenuItem); 
    windowMenu.addEventListener(air.Event.SELECT, colorChoice); 
} 
 
function colorChoice(event) { 
    var menuItem = event.target; 
    air.trace(menuItem.label + " has been selected"); 
}

如果正在使用 ContextMenuItem 类,则可以侦听 select 事件或 menuItemSelect 事件。 menuItemSelect 事件可以提供有关拥有此上下文菜单的对象的其他信息,但不能上升到包含菜单。

显示菜单事件

若要处理菜单的打开,可以为 displaying 事件添加一个侦听器,在显示菜单之前将调度该侦听器。可以使用 displaying 事件更新菜单,例如,通过添加或删除项目,或通过更新个别项目的启用或选中状态。还可以从 ContextMenu 对象侦听 menuSelect 事件。

在 AIR 2.6 和更高版本中,可以使用 preparing 事件来更新菜单,以响应显示菜单或使用键盘快捷键选择项目。