Adobe Air (wiwobooks.com Release)
enthalten:
Untermenüs
Menüpunkte
Separatoren
Alle Menüelemente können mit den Klassen NativeMenu und NativeMenuItem realisiert werden.
10.4.1 Menüwurzelelement
Wenn Sie das Menü als einen Baum von Menüoptionen ansehen, ist das native Menü selbst das Wurzelelement:
import flash.display.NativeMenu;
var root:NativeMenu = new NativeMenu();
10.4.2 Untermenü
Verwenden Sie die Methode addSubMenu() des nativen Menüs (oder eines Untermenüs, wenn Sie eine tiefer verschachtelte Struktur erstellen), um ein Untermenü zu erstellen. Die Methode addSubMenu() erwartet zwei Parameter: eine NativeMenu -Instanz und den Text, der im Menü erscheinen soll:
import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
var fileMenuItem:NativeMenuItem = root.addSubmenu(new NativeMenu(), "Datei");
10.4.3 Menüpunkt
Für die Erstellung eines Menüpunkts weist die Klasse NativeMenu eine Methode addItem() auf, die als ersten Parameter den Text für den Menüpunkt erwartet sowie als zweiten Parameter, ob es sich um einen Separator handelt. Wenn Sie separate Ereignis-Listener für jeden Menübefehl erstellen wollen, definieren Sie zusätzlich einen entsprechenden Ereignis-Listener (siehe Abschnitt 10.5). Fügen Sie zuletzt den Menüpunkt dem Menü hinzu:
import flash.events.Event;
import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
var openMenuItem:NativeMenuItem = new NativeMenuItem("Öffnen", false); openMenuItem.addEventListener(Event.SELECT, openCmdHandler); var fileMenu:NativeMenu = new NativeMenu();
fileMenu.addItem(openMenuItem);
// fileMenu an Wurzelelement anhängen (nicht gezeigt)
10.4.4 Separator
Wenn Sie Teile von Menüs visuell voneinander abgrenzen wollen, können Sie einen Separator einfügen, der im Menü durch einen waagerechten Strich dargestellt wird. Aus dem letzten Abschnitt wissen Sie bereits, dass Sie dazu ebenfalls die Klasse NativeMenuItem verwenden, der Sie jedoch für einen Separator einen abweichenden zweiten Parameter übergeben. Sie können dem Separator auch als ersten Parameter einen Text mitgeben, der aber nicht angezeigt wird:
fileMenu.addItem(new NativeMenuItem("", true);
10.4.5 Menüpunkt als eingeschaltet markieren
Wenn Sie einen Menüpunkt erstellen wollen, der zwischen ein- und ausgeschaltetem Zustand wechseln kann, können Sie dies erreichen, indem Sie die Eigenschaft checked einer NativeMenuItem -Instanz je nach Zustand aktivieren oder deaktivieren:
showHintsItem.checked = true;
Abbildung 10.7 zeigt exemplarisch ein Kontextmenü mit eingeschaltetem erstem Menüpunkt.
Abbildung 10.7 Eingeschalteter Menüpunkt
10.4.6 Menüpunkt deaktivieren
Es kommt häufig vor, dass Menüpunkte nicht immer aktiv sein sollen, aber dennoch angezeigt werden sollen. Wenn Sie einen Menüpunkt einfügen wollen, dieser aber nicht auswählbar sein soll, setzen Sie dessen Eigenschaft enabled auf den Wert false . Wenn Sie ein Untermenü deaktivieren, müssen Sie beachten, dass dann auch die darin enthaltenen Menüpunkte und Untermenüs nicht mehr erreichbar sind:
loggedInOnlyMenuItem.enabled = false;
10.5 Interaktion mit nativen Menüs
Native Menüs sind interaktive Elemente Ihrer Anwendung und müssen daher in der Lage sein, auf Benutzerinteraktion zu reagieren. Sowohl NativeMenu als auch NativeMenuItem sind folglich von der Klasse EventDispatcher abgeleitet, die die Funktionalität des Hinzufügens von Ereignis-Listenern und Ähnliches bereitstellt. NativeMenu und NativeMenuItem lösen Event-Ereignisse bei ihrer Auswahl ( Event.SELECT ) und unmittelbar vor ihrer Anzeige ( Event.DISPLAYING ) aus. Um die Auswahl von Menüelementen abzufangen, können Sie entweder an jeden Menüpunkt oder an das Menü selbst einen Ereignis-Listener anhängen. Letztere Möglichkeit ist in aller Regel praktischer, da Sie den ausgewählten Menüpunkt mithilfe der target -Eigenschaft des Ereignisobjekts herausfinden können.
10.6 Natives Menü für Anwendung/Fenster definieren
Wenn Sie Ihrem Fenster ein Menü hinzufügen wollen, erstellen Sie eine Instanz der Klasse NativeMenu und weisen diese der Menüinstanz für die Anwendung bzw. das Fenster zu. Bei Systemmenüs unter Mac OS X brauchen Sie das Menü nicht zu instantiieren, da standardmäßig bereits eines erstellt wird, das die Standardeinträge für Mac OS X-Anwendungen enthält.
Lösungsweg
1. Prüfen der Unterstützung von Systemmenü/Fenstermenü mithilfe der Eigenschaft supportsMenu der Klasse NativeApplication bzw. der NativeWindow - Instanz
Weitere Kostenlose Bücher