メニューイベントの処理
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
イベントを使用して、メニューの表示またはキーボードショートカットによるアイテムの選択に応答して、メニューを更新できます。
|
|
|