Bücher online kostenlos Kostenlos Online Lesen
Adobe Air (wiwobooks.com Release)

Adobe Air (wiwobooks.com Release)

Titel: Adobe Air (wiwobooks.com Release) Kostenlos Bücher Online Lesen
Autoren:
Vom Netzwerk:
des Fensters
    2. Instantiierung der Klasse NativeMenu für das Menü selbst (bei Systemmenü optional)
3. Aufbau der Menüstruktur mithilfe NativeMenu -Instanzen für Untermenüs bzw. NativeMenuItem -Instanzen für Menüpunkte
    Stolperfallen/Caveats
    Beachten Sie, dass Sie Standardeinträge des Systemmenüs überschreiben, wenn Sie dem Menü der Anwendung NativeApplication.nativeApplication.menu eine neue NativeMenu -Instanz zuweisen. Auf diese Weise ginge der Anwendung z. B. unter Mac OS X die Fähigkeit verloren, mithilfe des Tastaturkürzels (°) + (Q) geschlossen zu werden. In Abbildung 10.8 können Sie erkennen, dass unter Mac OS X die Untermenüs Datei , Bearbeiten und Fenster automatisch zum Systemmenü der AIR-Anwendung hinzugefügt werden. Wenn Sie also das Standardverhalten verändern, sorgen Sie dafür, dass Sie dem Benutzer für gewohnte Arbeitsabläufe einen adäquaten Ersatz schaffen.
    Abbildung 10.8 System- und Fenstermenüs in den verschiedenen Betriebssystemen
So geht es
Das nachfolgende Beispiel zeigt die Erstellung von System- oder Fenstermenüs (abhängig von der Plattform) in einer einfachen ActionScript-AIR-Anwendung:
    package {
import flash.desktop.NativeApplication;
import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.display.NativeWindow;
import flash.display.Sprite;
    public class menuAIRExample extends Sprite
{
private var natWin:NativeWindow; private var natMenu:NativeMenu;
    public function menuAIRExample() {
natWin = stage.nativeWindow natWin.title = "System-/Fenstermenü-Beispiel"; natWin.activate(); if(NativeApplication.supportsMenu) { appendMenus(NativeApplication.nativeApplication.menu); NativeApplication.nativeApplication. addEventListener(Event.SELECT, menuCommandListener); } if(NativeWindow.supportsMenu) { natMenu = new NativeMenu(); appendMenus(natMenu); natMenu.addEventListener(Event.SELECT, menuCommandListener);
natWin.menu = natMenu; }
}
    public function appendMenus(toMenu:NativeMenu):void { var subMenu:NativeMenu = new NativeMenu();
toMenu.addSubmenu(subMenu, "erstes Menü");
subMenu.addItem(new NativeMenuItem("Menüpunkt 1.1")); subMenu.addItem(new NativeMenuItem("Menüpunkt 1.2")); subMenu.addItem(new NativeMenuItem("", true));
var anotherSubMenu:NativeMenu = new NativeMenu(); anotherSubMenu.addItem(new NativeMenuItem("Menüpunkt 1.3.1")); anotherSubMenu.addItem(new NativeMenuItem("Menüpunkt 1.3.2")); subMenu.addSubmenu(anotherSubMenu, "Menü 1.3");
subMenu.addItem(new NativeMenuItem("", true));
subMenu.addItem(new NativeMenuItem("Menüpunkt 1.4")); subMenu = new NativeMenu();
toMenu.addSubmenu(subMenu, "zweites Menü");
subMenu.addItem(new NativeMenuItem("Menüpunkt 2.1")); subMenu.addItem(new NativeMenuItem("Menüpunkt 2.2"));
    }
    private function menuCommandListener(e:Event):void { trace(e.target.label+"ausgewählt");
}
}
}
    Listing 10.2 Beispiel: System-/Fenstermenüs erstellen
Das Resultat sehen Sie in Abbildung 10.8 für Mac OS X (oben), Ubuntu Linux (links) und Windows XP (rechts).
10.7 Kontextmenüs definieren
    Kontextmenüs sind wie System- oder Fenstermenüs von der Klasse NativeMenu des Pakets flash.display abgeleitet. Dabei bleibt es Ihnen überlassen, ob Sie diese Klasse selbst verwenden oder deren Unterklasse ContextMenu des Pakets flash.ui . Falls Sie bereits Erfahrung mit ActionScript-Programmierung vor AIR gesammelt haben, wird Ihnen die Verwendung von ContextMenu zunächst wahrscheinlich leichter fallen. Wenn Sie hingegen diesen Aspekt jetzt erst kennenlernen, empfehle ich Ihnen in jedem Fall, die Klasse ContextMenu nur im Kontext von Webanwendungen, in AIR-Anwendungen jedoch die Klasse NativeMenu zu verwenden. Zudem ist es nur mit der NativeMenu -Klasse möglich, Untermenüs zu definieren. In diesem Abschnitt gehe ich daher nur auf die Verwendung der NativeMenu -Klasse ein.
    Auch wenn Sie die Menüpunkte überall im Quelltext definieren können, empfiehlt es sich, den Aufbau der Menüstruktur in einer Funktion (oder gar einer eigenen Hilfsklasse) zu kapseln. Das macht nicht nur den Quelltext sauberer und übersichtlicher, sondern erleichtert auch den Umgang mit notwendigen Standardmenüs einiger Komponenten. So erfordert eine TextField -Instanz standardmäßig ein Menü für die Funktionen der Zwischenablage.
    Lösungsweg
Definition einer Funktion zum Aufbau der Menüstruktur mit NativeMenu - und NativeMenuItem -Instanzen
    Instantiieren der Klasse NativeMenu und Zuweisen der NativeMenu -Instanz zur Eigenschaft contextMenu

Weitere Kostenlose Bücher