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:
einer InteractiveObject -Instanz (falls notwendig)
    Übergabe der contextMenu -Instanz an die Funktion zum Aufbau der Menüstruktur
Stolperfallen/Caveats
    In manchen InteractiveObject -Unterklassen (z. B. TextField ) ist ein Kontextmenü bereits vordefiniert. Achten Sie darauf, dass Sie durch dessen Überschreiben mit einer neuen NativeWindow -Instanz keine Elemente entfernen, auf die diese Komponente angewiesen ist.
    So geht es
    Das nachfolgende Beispiel illustriert die Erstellung eines Kontextmenüs für eine TextField -Instanz:
public class ContextMenuAIRExample extends Sprite {
    package {
import flash.display.NativeMenu; import flash.display.NativeMenuItem; import flash.display.NativeWindow; import flash.display.Sprite;
import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
    private var natWin:NativeWindow; private var conMenu:NativeMenu;
    public function ContextMenuAIRExample() {
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
natWin = stage.nativeWindow;
natWin.activate();
conMenu = new NativeMenu();
appendMenu(conMenu);
var tfContextMenuTest:TextField = new TextField(); with(tfContextMenuTest) {
autoSize = TextFieldAutoSize.LEFT;
x=10;
y=10;
text = "Kontextmenü-Test";
}
natWin.stage.addChild(tfContextMenuTest);
appendMenu(tfContextMenuTest.contextMenu);
tfContextMenuTest.contextMenu.addEventListener(Event. SELECT, menuCommandListener);
conMenu.addEventListener(Event.
SELECT, menuCommandListener);
}
    private function appendMenu(aMenu:NativeMenu):void { aMenu.addItem(new NativeMenuItem("Eintrag 1")); aMenu.addItem(new NativeMenuItem("Eintrag 2")); aMenu.addItem(new NativeMenuItem("Eintrag 3"));
    }
    private function menuCommandListener(e:Event):void { trace(e.target.label + " ausgewählt");
}
}
}
    Listing 10.3 Einfaches Beispiel zur Definition von Kontextmenüs
Das Ergebnis sehen Sie in Abbildung 10.9, das den Zustand nach Rechtsklick auf das Textfeld zeigt.
Abbildung 10.9 Kontextmenüs definieren
10.8 Popup-Menüs definieren
    In AIR haben Sie zudem die Möglichkeit, außerhalb des Kontexts eines konkreten sichtbaren Elements ein Popup-Menü anzuzeigen. Das Popup-Menü ist dennoch an eine Instanz von NativeWindow (und damit an die Anwendungs-SicherheitsSandbox) gebunden, über deren Stage (das oberste Element der Anzeigeliste des nativen Fensters) das Menü angezeigt wird. Das native Fenster muss jedoch nicht sichtbar sein, damit das Popup-Menü angezeigt werden kann. Allerdings müssen Sie das Fenster erst an die richtige Stelle verschieben, wenn Sie das Popup-Menü an einer bestimmten Stelle auf dem Bildschirm anzeigen wollen.
    Lösungsweg
Instantiieren von NativeMenu für das Popup-Menü
    Erstellen der Menüstruktur mithilfe von NativeMenu - und NativeMenuItem - Instanzen
Eventuell Positionierung des nativen Fensters an geeigneter Stelle Zuweisen des Popup-Menüs zur stage -Eigenschaft einer NativeWindow - Instanz und Anzeige des Menüs mithilfe seiner Methode display()
So geht es
    Das nachfolgende Beispiel bewirkt, dass das unsichtbare native Fenster der Anwendung verschoben wird und anschließend ein Popup-Menü in der unteren linken Bildschirmecke erscheint:
    package {
import flash.desktop.NativeApplication;
import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.display.NativeWindow;
import flash.display.Screen;
import flash.display.Sprite; import flash.events.Event; import flash.geom.Rectangle;
    public class popupMenuAIRExample extends Sprite {
private var myMenu:NativeMenu = new NativeMenu;
    public function popupMenuAIRExample() {
var thisWin:NativeWindow = stage.nativeWindow; var bounds:Rectangle = Screen.mainScreen.visibleBounds; thisWin.x = 0;
thisWin.y = bounds.height - thisWin.height;
myMenu.addEventListener(Event.SELECT, menuCmdHandler); createMenu(myMenu);
myMenu.display(stage, 0, thisWin.height);
}
    private function createMenu(aMenu:NativeMenu):void { var subMenu1:NativeMenu = new NativeMenu();
var subMenu2:NativeMenu = new NativeMenu();
subMenu1.addItem(new NativeMenuItem("Menüpunkt 1.1")); subMenu1.addItem(new NativeMenuItem("Menüpunkt 1.2")); subMenu1.addItem(new NativeMenuItem("Menüpunkt 1.3")); subMenu2.addItem(new NativeMenuItem("Menüpunkt 2.1")); subMenu2.addItem(new NativeMenuItem("Menüpunkt 2.2")); aMenu.addSubmenu(subMenu1, "Untermenü 1");
aMenu.addSubmenu(subMenu2, "Untermenü 2");
var closeItem:NativeMenuItem

Weitere Kostenlose Bücher