Обработка событий меню

Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий

Меню отправляет события, когда пользователь выделяет меню или его пункт.

Обзор событий для классов меню

Обрабатывать события меню можно с помощью добавления к меню или отдельным его пунктам прослушивателей событий.

Объект

Отправляемые события

NativeMenu (AIR)

Event.PREPARING (Adobe AIR 2.6 и более поздние версии)

Event.DISPLAYING

Event.SELECT (передается от дочерних пунктов и подменю)

NativeMenuItem (AIR)

Event.PREPARING (Adobe AIR 2.6 и более поздние версии)

Event.SELECT

Event.DISPLAYING (передается от родительского меню)

ContextMenu

ContextMenuEvent.MENU_SELECT

ContextMenuItem

ContextMenuEvent.MENU_ITEM_SELECT

Event.SELECT (AIR)

Выбор событий меню

Для обработки щелчка мыши на пункте меню добавьте к объекту NativeMenuItem прослушиватель для события select :

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

Так как события select передаются вверх по иерархии, можно также прослушивать события select в родительском меню. При прослушивании на уровне меню для определения того, какая команда была выбрана, можно использовать свойство target объекта события. В примере ниже показано, как отслеживать выбранную команду с помощью метки:

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"); 
} 

Если используется класс ContextMenuItem, можно прослушивать либо событие select , либо событие menuItemSelect . Событие menuItemSelect дает дополнительную информацию об объекте, которому принадлежит контекстное меню, но не передается вверх по иерархии.

Отображение событий меню

Для обработки открытия меню можно добавить прослушиватель события displaying , отправляемого перед отображением меню. Событие displaying может использоваться для обновления меню, например при добавлении или удалении элементов или при обновлении установленных флажков для отдельных пунктов. Вы также можете прослушивать событие menuSelect объекта ContextMenu.

В AIR 2.6 и более поздних версиях можно использовать событие preparing для обновления меню в ответ на отображение меню или выбор пункта меню с помощью клавиатурного сокращения.