Verwalten von Fenstern

Adobe AIR 1.0 und höher

Mithilfe der Eigenschaften und Methoden der NativeWindow-Klasse verwalten Sie das Erscheinungsbild, das Verhalten und den Lebenszyklus von Desktopfenstern.

Hinweis: Wenn Sie mit dem Flex-Framework arbeiten, ist es im Allgemeinen besser, das Fensterverhalten mithilfe der Framework-Klassen zu verwalten. Auf die meisten NativeWindow-Eigenschaften und -Methoden können Sie über die mx:WindowedApplication- und mx:Window-Klasse zugreifen.

Abrufen einer NativeWindow-Instanz

Um ein Fenster bearbeiten zu können, müssen Sie zuerst die Window-Instanz abrufen. Eine Window-Instanz können Sie von einem der folgenden Orte abrufen:

  • Der native Fensterkonstruktor, der zum Erstellen des Fensters verwendet wird:

    var win:NativeWindow = new NativeWindow(initOptions);
  • Die nativeWindow -Eigenschaft der Fensterbühne:

    var win:NativeWindow = stage.nativeWindow;
  • Die stage -Eigenschaft eines Anzeigeobjekts im Fenster:

    var win:NativeWindow = displayObject.stage.nativeWindow;
  • Die target -Eigenschaft eines nativen Fensterereignisses, das vom Fenster ausgelöst wird:

    private function onNativeWindowEvent(event:NativeWindowBoundsEvent):void 
    { 
        var win:NativeWindow = event.target as NativeWindow; 
    }
  • Die nativeWindow -Eigenschaft einer HTML-Seite, die im Fenster angezeigt wird:

    var win:NativeWindow = htmlLoader.window.nativeWindow;
  • Die activeWindow - und openedWindows -Eigenschaften des NativeApplication-Objekt:

    var nativeWin:NativeWindow = NativeApplication.nativeApplication.activeWindow; 
    var firstWindow:NativeWindow = NativeApplication.nativeApplication.openedWindows[0];

    NativeApplication.nativeApplication.activeWindow verweist auf das aktive Fenster einer Anwendung (gibt jedoch null zurück, wenn es sich bei dem aktiven Fenster nicht um ein Fenster dieser AIR-Anwendung handelt). Das NativeApplication.nativeApplication.openedWindows -Array enthält alle Fenster in einer AIR-Anwendung, die nicht geschlossen wurden.

Da es sich bei den Flex-Objekten mx:WindowedApplication und mx:Window um Anzeigeobjekte handelt, können Sie in einer MXML-Datei mithilfe der stage -Eigenschaft wie folgt leicht auf das Anwendungsfenster verweisen:

<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" applicationComplete="init();"> 
    <mx:Script> 
        <![CDATA[ 
            import flash.display.NativeWindow; 
 
            public function init():void{ 
                var appWindow:NativeWindow = this.stage.nativeWindow; 
                //set window properties 
                appWindow.visible = true; 
            } 
        ]]> 
    </mx:Script> 
</WindowedApplication
Hinweis: Solange die WindowedApplication- oder Window-Komponente noch nicht vom Flex-Framework zur Fensterbühne hinzugefügt wurde, lautet die stage -Eigenschaft der Komponente null . Dieses Verhalten entspricht dem der Flex Application-Komponente. Es bedeutet jedoch, dass Sie nicht auf die Bühne oder die NativeWindow-Instanz in Ereignis-Listenern zugreifen können, die zu einem früheren Zeitpunkt im Initialisierungszyklus der WindowedApplication- und Window-Komponenten auftreten, wie etwa creationComplete . Nachdem das applicationComplete -Ereignis ausgelöst wurde, können Sie problemlos auf die Bühne und die NativeWindow-Instanz zugreifen.

Aktivieren, Anzeigen und Ausblenden von Fenstern

Sie aktivieren ein Fenster, indem Sie die activate() -Methode von NativeWindow aufrufen. Durch das Aktivieren wird das Fenster in den Vordergrund gestellt, es erhält den Tastatur- und Mausfokus und wird, bei Bedarf, sichtbar gemacht, indem das Fenster wiederhergestellt oder die visible -Eigenschaft auf true eingestellt wird. Durch das Aktivieren eines Fensters wird die Reihenfolge der anderen Fenster in der Anwendung nicht verändert. Durch das Aufrufen der activate() -Methode wird das Fenster veranlasst, ein activate -Ereignis auszulösen.

Um ein Fenster einzublenden. ohne es zu aktivieren, stellen Sie seine visible -Eigenschaft auf true ein. Dadurch wird das Fenster in den Vordergrund gestellt, erhält aber nicht den Fokus.

Um ein Fenster auszublenden, stellen Sie seine visible -Eigenschaft auf false ein. Durch das Ausblenden des Fensters wird die Anzeige des Fensters und dazugehöriger Taskleisten-Symbole, sowie, unter Mac OS X, der Eintrag im Windows-Menü unterdrückt.

Wenn Sie die Sichtbarkeit eines Fensters ändern, ändert sich auch die Sichtbarkeit der Fenster, die sich im Besitz des jeweiligen Fensters befinden. Wenn Sie beispielsweise ein Fenster ausblenden, werden auch alle Fenster, die dieses Fenster besitzt, ausgeblendet.

Hinweis: Unter Mac OS X ist es nicht möglich, ein minimiertes Fenster vollständig zu verbergen, das über ein Symbol im Fensterbereich des Docks verfügt. Ist bei einem minimierten Fenster die visible -Eigenschaft auf false eingestellt, wird das Dock-Symbol des Fensters weiterhin angezeigt. Durch Klicken auf das Symbol wird das Fenster wieder angezeigt.

Ändern der Anzeigereihenfolge von Fenstern

AIR bietet mehrere Methoden, mit denen die Anzeigereihenfolge der Fernster direkt geändert werden kann. Sie können ein Fenster an den Anfang oder das Ende der Anzeigereihenfolge verschieben, und Sie können ein Fenster vor oder hinter ein anderes Fenster verschieben. Außerdem können Sie die Anzeigereihenfolge von Fenstern ändern, indem Sie sie aktivieren.

Sie können dafür sorgen, dass ein Fenster immer vor anderen Fenstern angezeigt wird, indem Sie seine alwaysInFront -Eigenschaft auf true einstellen. Wenn mehrere Fenster diese Einstellung aufweisen, wird eine Anzeigereihenfolge unter diesen Fenstern erstellt, sie werden aber immer vor Fenstern angezeigt, deren alwaysInFront -Eigenschaft auf „false“ eingestellt ist.

Fenster in der obersten Gruppe werden außerdem vor Fenstern in anderen Anwendungen angezeigt, selbst wenn die AIR-Anwendung nicht aktiv ist. Da sich dieses Verhalten störend auf den Benutzer auswirken kann, sollte alwaysInFront nur auf true eingestellt werden, wenn es erforderlich und angemessen ist. Beispiele:

  • Temporäre Popupfenster für Steuereinheiten, wie etwa QuickInfos, Popuplisten, benutzerdefinierte Menüs oder Kombinationsfelder. Da diese Fenster geschlossen werden, wenn sie den Fokus verlieren, wird Benutzern nicht die Sicht auf andere Fenster genommen und sie fühlen sich nicht gestört.

  • Sehr dringende Fehlermeldungen und Warnungen. Wenn eine unwiderrufliche Änderung auftreten kann, falls der Benutzer nicht rechtzeitig reagiert, kann es gerechtfertigt sein, eine Warnmeldung im Vordergrund einzublenden. Die meisten Fehlermeldungen und Warnungen können jedoch in der normalen Anzeigereihenfolge der Fenster verarbeitet werden.

  • Kurzfristige überlappende Fenster

Hinweis: AIR erzwingt nicht die korrekte Verwendung der alwaysInFront -Eigenschaft. Wenn der Workflow eines Benutzers jedoch von Ihrer Anwendung unterbrochen wird, wird sie wahrscheinlich dem Papierkorb dieses Benutzers übergeben.

Wenn ein Fenster andere Fenster besitzt, werden diese Fenster immer vor dem übergeordneten Fenster angeordnet. Wenn Sie für ein Fenster, das andere Fenster besitzt, orderToFront() aufrufen oder alwaysInFront auf true einstellen, werden die untergeordneten Fenster zusammen mit dem Besitzerfenster vor anderen Fenstern angeordnet, aber die untergeordneten Fenster werden immer vor dem Besitzerfenster angezeigt.

Das Aufrufen von Methoden zur Fensteranordnung für Fenster, die sich im Besitz eines anderen Fensters befinden, funktioniert normal, vorausgesetzt, alle Fenster haben denselben Besitzer; es ist jedoch möglich, dass sich die Anordnung aller untergeordneten Fenster relativ zu den Fenstern ändert, die nicht zur Gruppe gehören. Wenn Sie beispielsweise für ein Fenster, das sich im Besitz eines anderen Fensters befindet, orderToFront() aufrufen, wird dieses Fenster zusammen mit seinem Besitzerfenster und allen anderen Fenstern, die denselben Besitzer haben, in der Reihenfolge der Fensteranzeige ganz nach vorne verschoben.

Die NativeWindow-Klasse bietet die folgenden Eigenschaften und Methoden, mit denen die Anzeigereihenfolge eines Fensters relativ zu anderen Fenstern festgelegt werden kann:

Mitglied

Beschreibung

alwaysInFront-Eigenschaft

Gibt an, ob das Fenster in der obersten Fenstergruppe angezeigt wird.

In fast allen Fällen ist false die beste Einstellung. Durch eine Änderung des Werts von false in true wird das Fenster vor allen anderen Fenstern angezeigt (es wird jedoch nicht aktiviert). Beim Ändern des Werts von true in false wird das Fenster hinter die anderen Fenster in der obersten Gruppe gestellt, es bleibt jedoch vor anderen Fenstern. Wenn die Eigenschaft auf ihren aktuellen Wert eingestellt wird, ändert sich die Anzeigereihenfolge der Fenster nicht.

Die alwaysInFront -Einstellung hat keine Auswirkung auf Fenster, die sich im Besitz eines anderen Fensters befinden.

orderToFront()

Stellt das Fenster in den Vordergrund.

orderInFrontOf()

Stellt das Fenster direkt vor ein bestimmtes Fenster.

orderToBack()

Stellt das Fenster hinter andere Fenster.

orderBehind()

Stellt das Fenster direkt hinter ein bestimmtes Fenster.

activate()

Stellt das Fenster in den Vordergrund (blendet es ein und weist ihm den Fokus zu).

Hinweis: Das Aufrufen der Methoden für die Anzeigereihenfolge hat keine Wirkung, wenn ein Fenster ausgeblendet (der Wert für visible lautet false ) oder minimiert ist.

Unter dem Linux-Betriebssystem erzwingen verschiedene Fenstermanager unterschiedliche Regeln bezüglich der Anzeigereihenfolge der Fenster:

  • Bei einigen Fenstermanagern werden Dienstprogrammfenster vor normalen Fenstern angezeigt.

  • Bei bestimmten Fenstermanagern wird ein Vollbildfenster, dessen alwaysInFront -Eigenschaft auf true eingestellt ist, immer vor anderen Fenstern angezeigt, bei denen alwaysInFront ebenfalls auf true eingestellt ist.

Schließen von Fenstern

Sie können ein Fenster mithilfe der NativeWindow.close() -Methode schließen.

Beim Schließen eines Fensters werden die Inhalte des Fenster entfernt, wenn jedoch andere Objekte auf diesen Inhalt verweisen, werden die Inhaltsobjekte nicht gelöscht. Die NativeWindow.close() -Methode wird asynchron ausgeführt, und die im Fenster enthaltene Anwendung wird während des Schließvorgangs ausgeführt. Die close-Methode löst ein close-Ereignis aus, wenn der Schließvorgang abgeschlossen ist. Das NativeWindow-Objekt ist im Prinzip noch gültig, aber der Zugriff auf die meisten Eigenschaften und Methoden eines geschlossenen Fensters erzeugt einen IllegalOperationError. Ein geschlossenes Fenster kann nicht erneut geöffnet werden. Überprüfen Sie die closed -Eigenschaft eines Fensters, um zu prüfen, ob das Fenster geschlossen wurde. Um ein Fenster einfach nur auszublenden, stellen Sie seine NativeWindow.visible -Eigenschaft auf false ein.

Ist die Nativeapplication.autoExit -Eigenschaft auf true eingestellt (die Standardeinstellung ), wird die Anwendung mit dem Schließen ihres letzten Fensters beendet.

Jedes Fenster, das sich im Besitz eines anderen Fensters befindet, wird zusammen mit seinem Besitzerfenster geschlossen. Die Fenster, die sich im Besitz eines anderen Fensters befinden, lösen kein closing-Ereignis aus und können das Schließen daher nicht verhindern. Ein close-Ereignis wird ausgelöst.

Abbrechen von Fenstervorgängen ermöglichen

Wurde einem Fenster das System-Fensterdesign zugewiesen, können Benutzerinteraktionen mit dem Fenster abgebrochen werden, indem auf Standardverhalten der entsprechenden Ereignisse gewartet wird, um sie anschließend abzubrechen. Wenn beispielsweise ein Benutzer auf die Schaltfläche „Schließen“ des System-Fensterdesigns klickt, wird das closing -Ereignis ausgelöst. Wird die preventDefault() -Methode des Ereignisses durch einen registrierten Listener aufgerufen, wird das Fenster nicht geschlossen.

Wenn einem Fenster nicht das System-Fensterdesign zugewiesen wurde, werden Benachrichtigungsereignisse für beabsichtigte Änderungen nicht automatisch vor der Änderung ausgelöst. Das bedeutet, wenn die Methoden zum Schließen eines Fensters oder Ändern des Fensterzustands aufgerufen werden, oder eine der bound-Eigenschaften des Fensters einstellt wird, kann die Änderung nicht abgebrochen werden. Die Anwendungslogik kann das relevante Benachrichtigungsereignis mithilfe der dispatchEvent() -Methode des Fensters auslösen, um Komponenten in Ihrer Anwendung auf bevorstehende Fensteränderungen hinzuweisen.

Im folgenden Beispiel wird eine abbrechbare Ereignisprozedur für die Schaltfläche „Schließen“ eines Fensters implementiert:

public function onCloseCommand(event:MouseEvent):void{ 
    var closingEvent:Event = new Event(Event.CLOSING,true,true); 
    dispatchEvent(closing); 
    if(!closingEvent.isDefaultPrevented()){ 
        win.close(); 
    } 
} 

Die dispatchEvent() -Methode gibt false zurück, wenn die preventDefault() -Ereignismethode durch einen Listener aufgerufen wird. Da sie jedoch auch aus anderen Gründen false zurückgeben kann, empfiehlt es sich, mithilfe der isDefaultPrevented() -Methode ausdrücklich zu prüfen, ob die Änderungen abgebrochen werden sollen.

Maximieren, Minimieren und Wiederherstellen von Fenstern

Sie können ein Fenster mithilfe der maximize() -Methode der NativeWindow-Klasse maximieren.

myWindow.maximize(); 

Sie können ein Fenster mithilfe der minimize() -Methode der NativeWindow-Klasse minimieren.

myWindow.minimize(); 

Mithilfe der restore() -Methode der NativeWindow-Klasse können Sie ein Fenster wiederherstellen, d. h. die Größe auf den Wert vor dem Minimieren oder Maximieren zurücksetzen.

myWindow.restore(); 

Ein Fenster, das sich im Besitz eines anderen Fensters befindet, wird zusammen mit dem Besitzerfenster minimiert und wiederhergestellt. Wenn ein Fenster, das sich im Besitz eines anderen Fensters befindet, zusammen mit dem Besitzerfenster minimiert wird, löst es keine Ereignisse aus.

Hinweis: Das aus dem Maximieren eines AIR-Fensters resultierende Verhalten unterscheidet sich vom Standardverhalten unter Mac OS X. Statt zwischen einer durch die Anwendung definierten „Standardgröße“ und der letzten durch den Benutzer eingestellten Größe umzuschalten, wird bei AIR-Fenstern zwischen der zuletzt durch die Anwendung oder den Benutzer eingestellten Größe und dem gesamten verwendbaren Bildschirmbereich umgeschaltet.

Unter dem Linux-Betriebssystem erzwingen verschiedene Fenstermanager unterschiedliche Regeln bezüglich der Einstellung des Anzeigestatus der Fenster:

  • Unter einigen Fenstermanagern können Dienstprogrammfenster nicht maximiert werden.

  • Wenn für ein Fenster eine maximale Größe festgelegt wurde, lassen einige Fenstermanager die Maximierung des Fensters nicht zu. Andere Fenstermanager maximieren den Anzeigestatus, ändern aber nicht die Größe des Fensters. In beiden Fällen wird kein Ereignis für die Anzeigestatusänderung ausgelöst.

  • Einige Fenstermanager berücksichtigen die maximizable - oder minimizable -Einstellungen des Fensters nicht.

Hinweis: Unter Linux werden Fenstereigenschaften asynchron geändert. Wenn Sie den Anzeigestatus in einer Programmzeile ändern und den Wert in der nächsten Zeile lesen, gibt der gelesene Wert immer noch die alte Einstellung an. Auf allen Plattformen löst das NativeWindow-Objekt das displayStateChange -Ereignis aus, wenn sich der Anzeigestatus ändert. Wenn Sie Aktionen ausführen müssen, die auf dem neuen Status des Fensters basieren, verwenden Sie dazu eine displayStateChange -Ereignisprozedur. Lesen Sie dazu Warten auf Window-Ereignisse .

Beispiel: Minimieren, Maximieren, Wiederherstellen und Schließen von Fenstern

Anhand der folgenden kurzen MXML-Anwendung werden die maximize() -, minimize() -, restore() - und close() -Methoden der Window-Klasse verdeutlicht:

<?xml version="1.0" encoding="utf-8"?> 
 
<mx:WindowedApplication  
    xmlns:mx="http://www.adobe.com/2006/mxml"  
    layout="vertical"> 
     
     
    <mx:Script> 
    <![CDATA[ 
    public function minimizeWindow():void 
    { 
        this.stage.nativeWindow.minimize(); 
    } 
 
    public function maximizeWindow():void 
    { 
        this.stage.nativeWindow.maximize(); 
    }           
     
    public function restoreWindow():void 
    { 
        this.stage.nativeWindow.restore(); 
    }           
 
    public function closeWindow():void 
    { 
        this.stage.nativeWindow.close(); 
    } 
    ]]> 
    </mx:Script> 
 
    <mx:VBox> 
        <mx:Button label="Minimize" click="minimizeWindow()"/> 
        <mx:Button label="Restore" click="restoreWindow()"/> 
        <mx:Button label="Maximize" click="maximizeWindow()"/> 
        <mx:Button label="Close" click="closeWindow()"/> 
    </mx:VBox> 
 
</mx:WindowedApplication>

Im folgenden ActionScript-Beispiel für Flash werden vier klickbare Textfelder erstellt, mit denen die minimize() -, maximize() -, restore() - und close() -Methoden der NativeWindow-Klasse ausgelöst werden:

package 
{ 
    import flash.display.Sprite; 
    import flash.events.MouseEvent; 
    import flash.text.TextField; 
     
    public class MinimizeExample extends Sprite 
    { 
        public function MinimizeExample():void  
        { 
            var minTextBtn:TextField = new TextField(); 
            minTextBtn.x = 10; 
            minTextBtn.y = 10; 
            minTextBtn.text = "Minimize"; 
            minTextBtn.background = true; 
            minTextBtn.border = true; 
            minTextBtn.selectable = false; 
            addChild(minTextBtn); 
            minTextBtn.addEventListener(MouseEvent.CLICK, onMinimize); 
         
            var maxTextBtn:TextField = new TextField(); 
            maxTextBtn.x = 120; 
            maxTextBtn.y = 10; 
            maxTextBtn.text = "Maximize"; 
            maxTextBtn.background = true; 
            maxTextBtn.border = true; 
            maxTextBtn.selectable = false; 
            addChild(maxTextBtn); 
            maxTextBtn.addEventListener(MouseEvent.CLICK, onMaximize); 
         
            var restoreTextBtn:TextField = new TextField(); 
            restoreTextBtn.x = 230; 
            restoreTextBtn.y = 10; 
            restoreTextBtn.text = "Restore"; 
            restoreTextBtn.background = true; 
            restoreTextBtn.border = true; 
            restoreTextBtn.selectable = false; 
            addChild(restoreTextBtn); 
            restoreTextBtn.addEventListener(MouseEvent.CLICK, onRestore); 
             
            var closeTextBtn:TextField = new TextField(); 
            closeTextBtn.x = 340; 
            closeTextBtn.y = 10; 
            closeTextBtn.text = "Close Window"; 
            closeTextBtn.background = true; 
            closeTextBtn.border = true; 
            closeTextBtn.selectable = false; 
            addChild(closeTextBtn); 
            closeTextBtn.addEventListener(MouseEvent.CLICK, onCloseWindow); 
        } 
        function onMinimize(event:MouseEvent):void 
        { 
            this.stage.nativeWindow.minimize(); 
        } 
        function onMaximize(event:MouseEvent):void 
        { 
            this.stage.nativeWindow.maximize(); 
        } 
        function onRestore(event:MouseEvent):void 
        { 
            this.stage.nativeWindow.restore(); 
        } 
        function onCloseWindow(event:MouseEvent):void 
        { 
            this.stage.nativeWindow.close(); 
        } 
    } 
}

Skalieren und Verschieben von Fenstern

Wurde einem Fenster das System-Fensterdesign zugewiesen, stehen dadurch Haltegriffe zur Verfügung, um durch Ziehen die Größe des Fensters zu skalieren und um es auf dem Desktop zu verschieben. Wenn einem Fenster nicht das System-Fensterdesign zugewiesen wurde, müssen Sie selbst dem Fenster Steuerelemente hinzufügen, um dem Benutzer das Skalieren und Verschieben des Fensters zu ermöglichen.

Hinweis: Um ein Fenster zu skalieren oder zu verschieben, müssen Sie zuerst einen Verweis auf die NativeWindow-Instanz abrufen. Weitere Informationen zum Abrufen einer Fensterreferenz finden Sie unter Abrufen einer NativeWindow-Instanz .

Skalieren von Fenstern

Damit ein Benutzer die Größe eines Fensters interaktiv ändern kann, verwenden Sie die NativeWindow-Methode startResize() . Wenn diese Methode durch ein mouseDown -Ereignis aufgerufen wird, wird der Skalierungsvorgang von der Maus bestimmt. Er wird beendet, wenn das Betriebssystem ein mouseUp -Ereignis empfängt. Beim Aufrufen von startResize() wird ein Argument übergeben, das die Kante oder die Ecke angibt, ab der das Fenster skaliert wird.

Um die Fenstergröße programmgesteuert festzulegen, stellen Sie die Eigenschaften width , height oder bounds des Fensters auf die gewünschten Größen. Wenn Sie die Ränder festlegen, können die Fenstergröße und -position gleichzeitig geändert werden. Die Reihenfolge, in der die Änderungen wirksam werden, ist jedoch nicht gewährleistet. Einige Linux-Fenstermanager lassen nicht zu, dass sich Fenster über die Grenzen des Desktopbildschirms hinaus erstrecken. In diesen Fällen kann die endgültige Fenstergröße aufgrund der Reihenfolge, in der die Eigenschaften festgelegt werden, beschränkt sein, selbst wenn der tatsächliche Effekt der Änderungen andernfalls zu einem zulässigen Fenster geführt hätte. Wenn Sie zum Beispiel Höhe und Position eines Fensters im unteren Bereich des Bildschirms ändern, wird die vollständige Höhenänderung ggf. nicht umgesetzt, wenn die Höhenänderung vor der Änderung der y-Position vorgenommen wird.

Hinweis: Unter Linux werden Fenstereigenschaften asynchron geändert. Wenn Sie die Größe eines Fensters in einer Zeile Ihres Programms ändern und dann in der nächsten Zeile die Abmessungen lesen, stellen sie immer noch die alten Einstellungen dar. Auf allen Plattformen löst das NativeWindow-Objekt das resize -Ereignis aus, wenn die Größe des Fensters geändert wird. Wenn Sie Aktionen ausführen müssen, die auf der neuen Größe oder dem neuen Status des Fensters basieren, zum Beispiel Anordnen der Steuerungen im Fenster, verwenden Sie dazu immer eine resize -Ereignisprozedur. Lesen Sie dazu Warten auf Window-Ereignisse .

Der Skaliermodus der Bühne bestimmt, wie sich die Fensterbühne und ihr Inhalt bei einer Skalierung des Fensters verhält. Beachten Sie, dass die Skaliermodi der Bühne für Situationen konzipiert sind, wie etwa einen Webbrowser, in der die Anwendung nicht die Größe oder das Seitenverhältnis des Anzeigebereichs steuert. Im Allgemeinen erhalten Sie die besten Ergebisse, wenn Sie die scaleMode -Eigenschaft der Bühne auf StageScaleMode.NO_SCALE einstellen. Wenn der Inhalt des Fensters skaliert werden soll, können Sie die scaleX - und scaleY -Parameter des Inhalts als Reaktion auf die Änderungen der Fenstergrenzen einstellen.

Verschieben von Fenstern

Mithilfe der NativeWindow-Methode startMove() verschieben Sie ein Fenster, ohne es zu skalieren. Wie bei der startResize() -Methode wird beim Aufrufen der startMove() -Methode durch ein mouseDown -Ereignis der Verschiebungsvorgang von der Maus bestimmt. Er wird beendet, wenn das Betriebssystem ein mouseUp -Ereignis empfängt.

Weitere Informationen über die startResize() - und startMove() -Methoden finden Sie im ActionScript 3.0-Referenzhandbuch für die Adobe Flash-Plattform .

Um ein Fenster programmgesteuert zu verschieben, stellen Sie die x -, y - oder bounds -Eigenschaften des Fensters auf die gewünschten Werte ein. Wenn Sie die Ränder (bounds) festlegen, können die Fenstergröße und -position gleichzeitig geändert werden.

Hinweis: Unter Linux werden Fenstereigenschaften asynchron geändert. Wenn Sie ein Fenster in einer Programmzeile verschieben und die Position in der nächsten Zeile lesen, gibt der gelesene Wert immer noch die alte Einstellung an. Auf allen Plattformen löst das NativeWindow-Objekt das move -Ereignis aus, wenn sich die Position ändert. Wenn Sie Aktionen ausführen müssen, die auf der neuen Position des Fensters basieren, verwenden Sie dazu eine move -Ereignisprozedur. Lesen Sie dazu Warten auf Window-Ereignisse .

Beispiel: Skalieren und Verschieben von Fenstern

Im folgenden Beispiel wird gezeigt, wie Skalierungs- und Verschiebungsvorgänge an einem Fenster eingeleitet werden:

package 
{ 
    import flash.display.Sprite; 
    import flash.events.MouseEvent; 
    import flash.display.NativeWindowResize; 
 
    public class NativeWindowResizeExample extends Sprite 
    { 
        public function NativeWindowResizeExample():void 
        { 
            // Fills a background area. 
            this.graphics.beginFill(0xFFFFFF); 
            this.graphics.drawRect(0, 0, 400, 300); 
            this.graphics.endFill(); 
     
            // Creates a square area where a mouse down will start the resize. 
            var resizeHandle:Sprite =  
                createSprite(0xCCCCCC, 20, this.width - 20, this.height - 20); 
            resizeHandle.addEventListener(MouseEvent.MOUSE_DOWN, onStartResize); 
     
            // Creates a square area where a mouse down will start the move. 
            var moveHandle:Sprite = createSprite(0xCCCCCC, 20, this.width - 20, 0); 
            moveHandle.addEventListener(MouseEvent.MOUSE_DOWN, onStartMove); 
        } 
     
        public function createSprite(color:int, size:int, x:int, y:int):Sprite 
        { 
            var s:Sprite = new Sprite(); 
            s.graphics.beginFill(color); 
            s.graphics.drawRect(0, 0, size, size); 
            s.graphics.endFill(); 
            s.x = x; 
            s.y = y; 
            this.addChild(s);     
            return s;         
        } 
     
        public function onStartResize(event:MouseEvent):void 
        { 
            this.stage.nativeWindow.startResize(NativeWindowResize.BOTTOM_RIGHT); 
        } 
 
        public function onStartMove(event:MouseEvent):void 
        { 
            this.stage.nativeWindow.startMove(); 
        } 
    } 
}