メニューイベントの処理

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)

Select メニューイベント

メニューアイテムがクリックされたときにそれに対処するには、 select イベントのイベントリスナーを NativeMenuItem オブジェクトに追加します。

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

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 イベントのリスナーを追加します。このイベントは、メニューが表示される前に送出されます。displaying イベントは、メニューを更新する場合に使用できます。例えば、アイテムを追加または削除したり、個々のアイテムについて有効化やチェックの状態を更新できます。また、ContextMenu オブジェクトから menuSelect イベントをリッスンすることもできます。

AIR 2.6 以降では、 preparing イベントを使用して、メニューの表示またはキーボードショートカットによるアイテムの選択に応答して、メニューを更新できます。