Native menu's maken (AIR)

Adobe AIR 1.0 of hoger

In dit onderwerp wordt beschreven hoe u de verschillende soorten native menu's kunt maken die door AIR worden ondersteund.

Hoofdmenuobjecten maken

Als u een NativeMenu-object wilt maken dat fungeert als basis van het menu, gebruikt u de NativeMenu-constructor:

var root:NativeMenu = new NativeMenu(); 

Voor toepassings- en venstermenu's vertegenwoordigt het hoofdmenu de menubalk. Dit menu moet alleen items bevatten die submenu's openen. Contextmenu's en pop-upmenu's bezitten geen menubalk. Het hoofdmenu kan dus zowel opdrachten en scheidingslijnen bevatten als submenu's.

Nadat u het menu hebt gemaakt, kunt u menu-items toevoegen. Items worden in het menu weergegeven in de volgorde waarin ze zijn toegevoegd, behalve als u de items bij een specifieke index toevoegt met behulp van de methode addItemAt() van een menuobject.

U kunt het menu toewijzen als toepassings-, venster-, pictogram- of contextmenu. U kunt het ook weergeven als pop-upmenu. Dit wordt beschreven in de volgende secties:

Het toepassingsmenu instellen of het venstermenu instellen

Het is belangrijk dat uw code kan worden gebruikt voor zowel toepassingsmenu's (ondersteund door Mac OS) als venstermenu's (ondersteund op andere besturingssystemen).

var root:NativeMenu = new NativeMenu(); 
if (NativeApplication.supportsMenu) 
{ 
    NativeApplication.nativeApplication.menu = root; 
} 
else if (NativeWindow.supportsMenu) 
{ 
    nativeWindow.menu = root; 
}
Opmerking: Mac OS definieert een menu met standaarditems voor iedere toepassing. Als u een nieuw NativeMenu-object toewijst aan de eigenschap menu van het NativeApplication-object, wordt het standaardmenu vervangen. U kunt er ook voor kiezen het standaardmenu te gebruiken in plaats van het te vervangen.

Adobe Flex biedt een FlexNativemenu-klasse zodat u gemakkelijk menu's kunt maken die op verschillende besturingssystemen werken. Gebruikt u het Flex-framework, gebruik dan de FlexNativeMenu-klassen in plaats van de NativeMenu-klasse.

Contextmenu's instellen op een interactief object

interactiveObject.contextMenu = root;

Dock-pictogrammenu's instellen of systeemvakpictogrammen instellen

Het is belangrijk dat uw code kan worden gebruikt voor zowel toepassingsmenu's (ondersteund door Mac OS) als venstermenu's (ondersteund op andere besturingssystemen).

if (NativeApplication.supportsSystemTrayIcon) 
{ 
    SystemTrayIcon(NativeApplication.nativeApplication.icon).menu = root; 
} 
else if (NativeApplication.supportsDockIcon) 
{ 
    DockIcon(NativeApplication.nativeApplication.icon).menu = root; 
}
Opmerking: Mac OS X definieert een standaardmenu voor het dock-pictogram van de toepassing. Wanneer u een nieuw NativeMenu toewijst aan de menu-eigenschap van het DockIcon-object, worden de items in dat menu weergegeven boven de standaarditems. U kunt de standaard menu-items niet verwijderen, openen of wijzigen.

Menu's weergeven als pop-up

root.display(stage, x, y); 

Submenu's maken

Als u een submenu wilt maken, voegt u een NativeMenuItem-object toe aan het bovenliggende menu. Vervolgens wijst u het NativeMenu-object dat het submenu definieert, toe aan de eigenschap submenu van het item. AIR biedt u twee manieren om submenu-items en de bijbehorende menuobjecten te maken:

U kunt een menu-item en het bijbehorende menuobject in één stap maken met behulp van de methode addSubmenu() :

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

U kunt ook het menu-item maken en het menuobject in een aparte stap toewijzen aan de eigenschap submenu ervan:

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

Menuopdrachten maken

Als u een menuopdracht wilt maken, voegt u een NativeMenuItem-object toe aan een menu. Voeg er vervolgens een gebeurtenislistener aan toe die verwijst naar de functie die de menuopdracht implementeert:

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

U kunt luisteren naar de gebeurtenis select op het opdrachtitem zelf (zoals weergegeven in het voorbeeld), of u kunt luisteren naar de gebeurtenis select op een bovenliggend menuobject.

Opmerking: Menu-items die submenu's en scheidingslijnen vertegenwoordigen, verzenden de gebeurtenis select niet en kunnen dus niet als opdracht worden gebruikt.

Menuscheidingslijnen maken

Als u een scheidingslijn wilt maken, maakt u een NativeMenuItem-object. Stel de parameter isSeparator in de constructor in op true . Vervolgens voegt u het item voor de scheidingslijn op de gewenste locatie toe aan het menu.

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

Een eventueel label dat voor de scheidingslijn wordt opgegeven, wordt niet weergegeven.