Erstellen nativer Menüs (AIR)

Adobe AIR 1.0 und höher

In diesem Thema erfahren Sie, wie die verschiedenen von AIR unterstützten nativen Menüs erstellt werden.

Erstellen von Stammmenüobjekten

Verwenden Sie den NativeMenu-Konstruktor zum Erstellen eines NativeMenu-Objekts, das als Stamm des Menüs dienen soll:

var root:NativeMenu = new NativeMenu(); 

Bei Anwendungs- und Fenstermenüs entspricht die Menüleiste dem Stammmenü und sollte nur Elemente enthalten, die Untermenüs öffnen. Kontext- und Popupmenüs haben keine Menüleiste. Daher kann das Stammmenü Befehle, Trennlinien und Untermenüs enthalten.

Nachdem Sie das Menü erstellt haben, können Sie ihm Elemente hinzufügen. Elemente werden in der Reihenfolge im Menü angezeigt, in der sie hinzugefügt wurden, sofern Sie die Elmente nicht mit der addItemAt() -Methode eines Menüobjekts an einem bestimmten Index hinzufügen.

Legen Sie das Menü als Anwendungs-, Fenster-, Symbol- oder Kontextmenü fest oder zeigen Sie es als Popupmenü an, wie in den nachstehenden Abschnitten veranschaulicht:

Festlegen von Anwendungsmenüs oder Fenstermenüs

Ihr Code muss sowohl Anwendungsmenüs (unter Mac OS unterstützt) als auch Fenstermenüs (unter anderen Betriebssystemen unterstützt) verarbeiten können.

var root:NativeMenu = new NativeMenu(); 
if (NativeApplication.supportsMenu) 
{ 
    NativeApplication.nativeApplication.menu = root; 
} 
else if (NativeWindow.supportsMenu) 
{ 
    nativeWindow.menu = root; 
}
Hinweis: Unter Mac OS enthält ein Menü laut Definition Standardelemente für jede Anwendung. Durch Zuweisen eines NativeMenu-Objekts zur menu -Eigenschaft des NativeApplication-Objekts wird das Standardmenü ersetzt. Sie müssen das Standardmenü jedoch nicht ersetzen, sondern können dieses direkt verwenden.

Adobe Flex enthält die FlexNativeMenu-Klasse, mit der ganz einfach Menüs erstellt werden können, die auf verschiedenen Plattformen funktionieren. Wenn Sie die Flex-Architektur einsetzen, verwenden Sie die FlexNativeMenu-Klassen anstelle der NativeMenu-Klasse.

Festlegen von Kontextmenüs für interaktive Objekte

interactiveObject.contextMenu = root;

Festlegen von Menüs für Dock-Symbole oder von Menüs für Infobereich-Symbole

Ihr Code muss sowohl Anwendungsmenüs (unter Mac OS unterstützt) als auch Fenstermenüs (unter anderen Betriebssystemen unterstützt) verarbeiten können.

if (NativeApplication.supportsSystemTrayIcon) 
{ 
    SystemTrayIcon(NativeApplication.nativeApplication.icon).menu = root; 
} 
else if (NativeApplication.supportsDockIcon) 
{ 
    DockIcon(NativeApplication.nativeApplication.icon).menu = root; 
}
Hinweis: Das Mac OS X definiert ein Standardmenü für das Dock-Symbol der Anwendung. Wenn Sie der menu-Eigenschaft des DockIcon-Objekts ein neues NativeMenu zuweisen, werden die Elemente in diesem Menü oberhalb der Standardelemente angezeigt. Es ist nicht möglich, Standardmenüelemente zu entfernen, zu ändern oder auf diese zuzugreifen.

Anzeigen von Menüs als Popupmenüs

root.display(stage, x, y); 

Erstellen von Untermenüs

Zum Erstellen eines Untermenüs fügen Sie dem übergeordneten Menü ein NativeMenuItem-Objekt hinzu und weisen dann das NativeMenu-Objekt, das das Untermenü definiert, der submenu -Eigenschaft des Elements zu. AIR bietet zwei Möglichkeiten zum Erstellen von Untermenüelementen und dem zugehörigen Menüobjekt:

Mit der addSubmenu() -Methode können Sie ein Menüelement und das zugehörige Menüobjekt in einem Schritt erstellen:

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

Sie können zum Erstellen des Menüelements und Zuweisen des Menüobjekts zur submenu -Eigenschaft aber auch separate Schritte ausführen:

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

Erstellen von Menübefehlen

Fügen Sie zum Erstellen eines Menübefehls einem Menü ein NativeMenuItem-Objekt und einen Listener hinzu, der auf die Funktion verweist, die den Menübefehl implementiert:

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

Sie können das select -Ereignis (wie im Beispiel) im Befehl selbst oder im übergeordneten Menüobjekt überwachen.

Hinweis: Menüelemente, die Untermenüs und Trennlinien repräsentieren, lösen keine select -Ereignisse aus und können daher nicht als Befehle verwendet werden.

Erstellen von Menütrennlinien

Erstellen Sie zum Erstellen einer Trennlinie ein NativeMenuItem und setzen Sie den isSeparator -Parameter im Konstruktor auf true . Fügen Sie das Trennelement dann an der richtigen Stelle im Menü hinzu:

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

Die gegebenenfalls für die Trennlinie angegebene Bezeichnung wird nicht angezeigt.