メニューイベントの処理

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(親メニューから伝達される)

Select メニューイベント

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

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

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

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