建立原生選單 (AIR)

Adobe AIR 1.0 以及更新的版本

本主題將說明如何建立 AIR 支援的各種原生選單類型。

建立根選單物件

若要建立 NativeMenu 物件做為選單的根層級,請使用 NativeMenu 建構函式:

var root:NativeMenu = new NativeMenu(); 

對於應用程式和視窗選單而言,根選單表示選單列,並且只能包含可開啟子選單的項目。由於快顯選單與彈出式選單都沒有選單列,因此根選單可以包含命令、分隔線和子選單。

建立選單之後,您可以加入選單項目。除非您使用選單物件的 addItemAt() 方法以特定索引方式加入項目,不然項目在選單中的顯示順序即為加入時的順序。

請指定選單做為應用程式、視窗、圖示或快顯選單,或者將選單顯示為彈出式選單,如下列各節所示:

設定應用程式選單或視窗選單

您的程式碼要同時容納應用程式選單或 (Mac 作業系統支援) 以及視窗選單 (其他作業系統支援),這一點很重要。

var root:NativeMenu = new NativeMenu(); 
if (NativeApplication.supportsMenu) 
{ 
    NativeApplication.nativeApplication.menu = root; 
} 
else if (NativeWindow.supportsMenu) 
{ 
    nativeWindow.menu = root; 
}
備註: Mac OS 會針對每個應用程式,定義包含標準項目的選單。如果將新的 NativeMenu 物件指定給 NativeApplication 物件的 menu 屬性,即可取代標準選單。您也可以使用標準選單而非將其取代。

Adobe Flex 提供 FlexNativeMenu 類別,可以用來輕輕鬆鬆建立各平台都有效的選單。如果您使用 Flex 架構,就可以使用 FlexNativeMenu 類別來取代 NativeMenu 類別。

在互動式物件上設定快顯選單

interactiveObject.contextMenu = root;

設定停駐列圖示選單或系統匣圖示選單

您的程式碼要同時容納應用程式選單或 (Mac 作業系統支援) 以及視窗選單 (其他作業系統支援),這一點很重要。

if (NativeApplication.supportsSystemTrayIcon) 
{ 
    SystemTrayIcon(NativeApplication.nativeApplication.icon).menu = root; 
} 
else if (NativeApplication.supportsDockIcon) 
{ 
    DockIcon(NativeApplication.nativeApplication.icon).menu = root; 
}
備註: Mac OS X 會針對應用程式停駐列圖示,定義標準選單。當您將新的 NativeMenu 指定給 DockIcon 物件的 menu 屬性時,該選單中的所有項目都會顯示在標準項目的上方。您無法移除、存取或修改標準選單項目。

以彈出方式顯示選單

root.display(stage, x, y); 

建立子選單

若要建立子選單,請將 NativeMenuItem 物件加入至上層選單,然後將定義子選單的 NativeMenu 物件指定給該項目的 submenu 屬性。AIR 可提供兩種方式,讓您建立子選單項目及其相關聯的選單物件:

您可以使用 addSubmenu() 方法,一次建立選單項目及其相關的選單物件:

var editMenuItem:NativeMenuItem = root.addSubmenu(new NativeMenu(), "Edit"); 

您也可以先建立選單項目,然後再將選單物件指定給該選單項目的 submenu 屬性:

var editMenuItem:NativeMenuItem = root.addItem("Edit", false); 
editMenuItem.submenu = new NativeMenu(); 

建立選單命令

若要建立選單命令,請將 NativeMenuItem 物件加入至選單,然後再加入參考實作選單命令之函數的事件偵聽程式:

var copy:NativeMenuItem = new NativeMenuItem("Copy", false); 
copy.addEventListener(Event.SELECT, onCopyCommand); 
editMenu.addItem(copy);

您可以對命令項目本身偵聽 select 事件 (如下列範例所示),或者對上層選單物件偵聽 select 事件。

備註: 表示子選單和分隔線的選單項目不會傳送 select 事件,因此無法當做命令使用。

建立選單分隔線

若要建立分隔線,請建立 NativeMenuItem 並在建構函式中將 isSeparator 參數設定為 true 。接著,再將分隔線加入至選單中的正確位置:

var separatorA:NativeMenuItem = new NativeMenuItem("A", true); 
editMenu.addItem(separatorA);

為該分隔線指定的標籤 (如果有的話) 並不會顯示。