處理選單事件
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 事件的事件偵聽程式加入至 NativeMenuItem 物件:
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 事件的偵聽程式,這個事件會在選單顯示之前傳送。您可以使用 displaying 事件更新選單 (例如,透過加入或移除項目,或透過更新個別項目的 enabled 或 checked 狀態)。您亦可從 ContextMenu 物件偵聽 menuSelect 事件。
在 AIR 2.6 及更新的版本中,您可以使用 preparing 事件來更新選單,以回應顯示選單或使用鍵盤快速鍵選取項目。