Skapa inbyggda menyer (AIR)

Adobe AIR 1.0 och senare

I det här avsnittet beskriver vi hur du skapar olika sorters inbyggda menyer som AIR kan hantera.

Skapa ett rotmenyobjekt

Om du vill skapa ett NativeMenu-objekt som fungerar som rot för menyn använder du konstruktorn NativeMenu:

var root:NativeMenu = new NativeMenu(); 

För program- och fönstermenyer representerar rotmenyn menyraden och ska bara innehålla alternativ som öppnar undermenyer. Snabbmenyer och popup-menyer har ingen menyrad; rotmenyn kan därför innehålla både kommandon, avgränsare och undermenyer.

När menyn har skapats kan du lägga till menyalternativ. Menyalternativen visas i den ordning som de lades till, om du inte lägger till alternativen i ett särskilt index med hjälp av metoden addItemAt() i ett menyobjekt.

Tilldela menyn som en program-, fönster-, ikon eller snabbmeny eller visa den som en popup-meny som i följande avsnitt:

Ställa in programmenyn eller fönster-menyn

Det är viktigt att koden omfattar både programmenyer (stöds på Mac OS) och fönstermenyer (stöds på andra operativsystem)

var root:NativeMenu = new NativeMenu(); 
if (NativeApplication.supportsMenu) 
{ 
    NativeApplication.nativeApplication.menu = root; 
} 
else if (NativeWindow.supportsMenu) 
{ 
    nativeWindow.menu = root; 
}
Obs! Mac OS definierar en meny som innehåller standardalternativ för varje program. Om du tilldelar ett nytt NativeMenu-objekt till menu-egenskapen i NativeApplication-objektet ersätts standardmenyn. Du kan också använda standardmenyn i stället för att ersätta den.

I Adobe Flex finns en FlexNativeMenu-klass för att enkelt skapa menyer som fungerar på olika plattformar. Om du använder Flex Framework kan du använda klasserna FlexNativeMenu i stället för klassen NativeMenu.

Ställa in en snabbmeny i ett interaktivt objekt

interactiveObject.contextMenu = root;

Ställa in dockningsikonens meny eller systemfältsikonens meny

Det är viktigt att koden omfattar både programmenyer (stöds på Mac OS) och fönstermenyer (stöds på andra operativsystem)

if (NativeApplication.supportsSystemTrayIcon) 
{ 
    SystemTrayIcon(NativeApplication.nativeApplication.icon).menu = root; 
} 
else if (NativeApplication.supportsDockIcon) 
{ 
    DockIcon(NativeApplication.nativeApplication.icon).menu = root; 
}
Obs! Mac OS X definierar en standardmeny för programmets dockningsikon. Om du tilldelar ett nytt NativeMenu-objekt till menu-egenskapen i DockIcon-objektet, visas alternativen på den menyn ovanför standardalternativen. Du kan inte ta bort, få tillgång till eller ändra standardmenyalternativen.

Visa en meny som en popup-meny

root.display(stage, x, y); 

Skapa en undermeny

Om du vill skapa en undermeny lägger du till ett NativeMenuItem-objekt till den överordnade menyn och tilldelar sedan det NativeMenu-objekt som definierar undermenyn till alternativets submenu-egenskap. I AIR finns två sätt att skapa undermenyalternativ och deras tillhörande menyobjekt:

Du kan skapa ett menyalternativ och dess tillhörande menyobjekt i ett steg med hjälp av metoden addSubmenu():

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

Du kan också skapa menyalternativet och tilldela menyobjektet till dess submenu-egenskap separat:

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

Skapa ett menykommando

Om du vill skapa ett menykommando lägger du till ett NativeMenuItem-objekt till en meny och lägger till en händelseavlyssnare som refererar den funktion som implementerar menykommandot:

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

Du kan lyssna efter select-händelsen i själva kommandoalternativet (visas i exemplet) eller också kan du lyssna efter select-händelsen i ett överordnat menyobjekt.

Obs! Menyalternativ som representerar undermenyer och avgränsare skickar inte select-händelser och kan därför inte användas som kommandon.

Skapa en menyavgränsningslinje

Om du vill skapa en avgränsningslinje skapar du ett NativeMenuItem-objekt genom att ange isSeparator-parametern i konstruktorn som true. Lägg sedan till avgränsningsalternativet på rätt plats i menyn:

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

Den etikett som angetts för avgränsaren (om sådan finns) visas inte.