Gestión de eventos de menú

Flash Player 9 y posterior, Adobe AIR 1.0 y posterior

Un menú distribuye eventos cuando el usuario selecciona el menú o cuando el usuario selecciona un elemento de menú.

Resumen de eventos para clases de menús

Añada detectores de eventos a los menús o elementos individuales para gestionar eventos de menús.

Objeto

Eventos detectados

NativeMenu (AIR)

Event.PREPARING (Adobe AIR 2.6 y posterior)

Event.DISPLAYING

Event.SELECT (propagado de elementos secundarios y submenús)

NativeMenuItem (AIR)

Event.PREPARING (Adobe AIR 2.6 y posterior)

Event.SELECT

Event.DISPLAYING (propagado del menú principal)

ContextMenu

ContextMenuEvent.MENU_SELECT

ContextMenuItem

ContextMenuEvent.MENU_ITEM_SELECT

Event.SELECT (AIR)

Selección de eventos de menú

Para gestionar un clic en un elemento de menú, añada un detector de evento para el evento select al objeto NativeMenuItem:

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

Debido a que los eventos select se propagan a los menús que los contienen, también puede detectar eventos select en un menú principal. Cuando se detecta a nivel de menú, se puede utilizar la propiedad target del objeto de evento para determinar el comando de menú seleccionado. En el siguiente ejemplo se rastrea la etiqueta del comando seleccionado:

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

Si se utiliza la clase ContextMenuItem, se puede detectar el evento select o el evento menuItemSelect . El evento menuItemSelect proporciona información adicional sobre el objeto propietario del menú contextual, pero no se propaga a los menús que lo contienen.

Visualización de eventos de menú

Para gestionar la apertura de un menú, se puede añadir un detector para el evento displaying , que se distribuye antes de visualizar un menú. Puede utilizar el evento displaying para actualizar el menú, por ejemplo añadiendo o quitando elementos o actualizando los estados activados o seleccionados de elementos individuales. También se puede detectar el evento menuSelect de un objeto ContextMenu.

En AIR 2.6 y posterior, se puede utilizar el evento preparing para actualizar un menú como respuesta a mostrar un menú o seleccionar un elemento con un método abreviado de teclado.