Vensters beheren

Adobe AIR 1.0 of hoger

U kunt de eigenschappen en methoden van de klasse NativeWindow gebruiken om het uiterlijk, het gedrag en de levenscyclus van bureaubladvensters te beheren.

Opmerking: Als u het Flex-framework gebruikt, is het doorgaans beter venstergedrag te beheren met behulp van de frameworkklassen. U krijgt toegang tot de meeste NativeWindow-eigenschappen en -methoden via de klassen mx:WindowedApplication en mx:Window.

NativeWindow-instanties opvragen

Als u een venster wilt bewerken, moet u eerst een instantie van het venster opvragen. U kunt een vensterinstantie opvragen uit een van de volgende locaties:

  • De native vensterconstructor die wordt gebruikt om het venster te maken:

    var win:NativeWindow = new NativeWindow(initOptions);
  • De eigenschap nativeWindow van het werkgebied van het venster:

    var win:NativeWindow = stage.nativeWindow;
  • De eigenschap stage van een weergaveobject in het venster:

    var win:NativeWindow = displayObject.stage.nativeWindow;
  • De eigenschap target van een native venstergebeurtenis die wordt verzonden door het venster:

    private function onNativeWindowEvent(event:NativeWindowBoundsEvent):void 
    { 
        var win:NativeWindow = event.target as NativeWindow; 
    }
  • De eigenschap nativeWindow van een HTML-pagina die wordt weergegeven in het venster:

    var win:NativeWindow = htmlLoader.window.nativeWindow;
  • De eigenschappen activeWindow en openedWindows van het NativeApplication-object:

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

    NativeApplication.nativeApplication.activeWindow verwijst naar het actieve venster van een toepassing (maar retourneert de waarde null als het actieve venster geen venster van deze AIR-toepassing is). De array NativeApplication.nativeApplication.openedWindows bevat alle vensters in een AIR-toepassing die niet zijn gesloten.

Omdat de Flex-objecten mx:WindowedApplication en mx:Window weergaveobjecten zijn, kunt u gemakkelijk naar het toepassingsvenster in een MXML-bestand verwijzen met de eigenschap stage . U doet dit als volgt:

<?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
Opmerking: Totdat de component WindowedApplication of Window door het Flex-framework wordt toegevoegd aan het werkgebied van het venster, is de eigenschap stage van de component ingesteld op null . Dit gedrag is consistent met dat van de Flex-component Application. Dit gedrag houdt echter in dat het niet mogelijk is toegang te krijgen tot het werkgebied of de NativeWindow-instantie in listeners voor gebeurtenissen die eerder in de initialisatiecyclus van de componenten WindowedApplication en Window plaatsvinden, zoals creationComplete . Het is veilig om het werkgebied en de NativeWindow-instantie te benaderen wanneer de gebeurtenis applicationComplete is verzonden.

Vensters activeren, weergeven en verbergen

Als u een venster wilt activeren, roept u de NativeWindow-methode activate() op. Als het venster wordt geactiveerd, wordt het venster op de voorgrond weergegeven, krijgt het de focus voor toetsenbord- en muisbewerkingen en wordt het, indien nodig, zichtbaar gemaakt. U maakt het venster zichtbaar door het vorige formaat van het venster te herstellen of de eigenschap visible op true in te stellen. Als een venster wordt geactiveerd, wordt de volgorde van andere vensters in de toepassing niet gewijzigd. Het aanroepen van de methode activate() leidt ertoe dat het venster de gebeurtenis activate verzendt.

Als u een verborgen venster wilt weergeven zonder het te activeren, stelt u de eigenschap visible in op true . Hiermee wordt het venster op de voorgrond geplaatst, maar wordt de focus niet aan het venster toegewezen.

Als u een venster wilt verbergen, stelt u de eigenschap visible van dat venster in op false . Door een venster te verbergen, wordt de weergave onderdrukt van zowel het venster als de betreffende taakbalkpictogrammen, en - in Mac OS X - ook de toegang tot het Windows-menu.

Wanneer u de zichtbaarheid van een venster wijzigt, wordt de zichtbaarheid van alle vensters waarvan het venster de eigenaar is ook gewijzigd. Als u bijvoorbeeld een venster verbergt, worden alle vensters waarvan het de eigenaar is ook verborgen.

Opmerking: In Mac OS X is het niet mogelijk om een geminimaliseerd venster met een pictogram in het venstergedeelte van het Dock volledig te verbergen. Als de eigenschap visible van een geminimaliseerd venster is ingesteld op false , wordt het Dock-pictogram voor het venster nog wel weergegeven. Als de gebruiker op het pictogram klikt, wordt de zichtbaarheid van het venster hersteld en wordt het venster opnieuw weergegeven.

De weergavevolgorde van vensters wijzigen

AIR biedt verschillende methoden voor het rechtstreeks wijzigen van de weergavevolgorde van vensters. U kunt een venster vooraan of achteraan in de weergavevolgorde plaatsen en u kunt een venster boven of onder een ander venster plaatsen. Tegelijkertijd kan de gebruiker de volgorde van vensters wijzigen door deze te activeren.

U kunt zorgen dat een venster steeds vóór de andere vensters wordt weergegeven door de eigenschap alwaysInFront in te stellen op true . Als deze instelling is geconfigureerd voor meer dan één venster, bepalen de vensters onderling de weergavevolgorde, maar deze vensters worden wel altijd weergegeven vóór de vensters waarvoor de eigenschap alwaysInFront is ingesteld op false.

Vensters in de bovenste groep worden ook weergegeven boven op vensters in andere toepassingen, zelfs wanneer de AIR-toepassing niet actief is. Omdat dit gedrag storend kan zijn voor een gebruiker, moet u de eigenschap alwaysInFront alleen op true instellen als dat echt nodig en terecht is. Hier volgen enkele voorbeelden van gerechtvaardigd gebruik van deze instelling:

  • Tijdelijke pop-upvensters voor besturingen zoals scherminfo, pop-uplijsten, aangepaste menu's of keuzelijsten. Omdat deze vensters gewoonlijk worden gesloten als ze de focus verliezen, wordt voorkomen dat ze de gebruiker het zicht op een ander venster benemen.

  • Uiterst urgente foutberichten en waarschuwingen mogen deze instelling hebben. Wanneer er een onomkeerbare wijziging wordt aangebracht als de gebruiker niet tijdig reageert, kan het gerechtvaardigd zijn om een waarschuwingsvenster boven op alle andere vensters weer te geven. De meeste foutberichten en waarschuwingen kunnen echter worden verwerkt in de normale weergavevolgorde van vensters.

  • Kortstondig weergegeven, eenvoudige en rechthoekige (toast-stijl) informatievensters mogen deze instelling hebben.

Opmerking: AIR dwingt een gepast gebruik van de eigenschap alwaysInFront niet af. Als uw toepassing zich storend gedraagt tijdens de normale werkzaamheden van de gebruiker, zal de toepassing hoogstwaarschijnlijk al snel in de prullenbak van diezelfde gebruiker worden gedeponeerd.

Als een venster eigenaar is van andere vensters, worden die vensters altijd vóór het eigenaarvenster geplaatst. Als u orderToFront() aanroept of alwaysInFront instelt op true voor een venster dat eigenaar is van andere vensters, worden deze vensters samen met het eigenaarvenster vóór andere vensters gerangschikt, maar worden de eigendomvensters nog steeds vóór de eigenaar weergegeven.

Het aanroepen van methodes voor het rangschikken van vensters voor eigendomvensters werkt op de gebruikelijke wijze voor vensters die eigendom zijn van hetzelfde venster, maar kan ook de volgorde van de volledige groep met eigendomvensters wijzigen in vergelijking met vensters buiten die groep. Als u bijvoorbeeld orderToFront() aanroept voor een eigendomvenster, worden dat venster, de eigenaar en alle andere vensters van dezelfde eigenaar vooraan in de vensterrangschikking geplaatst.

De klasse NativeWindow biedt de volgende eigenschappen en methoden voor het instellen van de plaats van een venster ten opzichte van andere vensters in de weergavevolgorde:

Lid

Beschrijving

de eigenschap alwaysInFront

Hiermee geeft u aan of het venster in de bovenste groep vensters moet worden weergegeven.

In vrijwel alle gevallen is false de beste instelling. Als u de waarde van false in true wijzigt, wordt het venster boven op alle vensters weergegeven (het venster wordt overigens niet geactiveerd). Als u de waarde van true in false wijzigt, wordt het venster achter de vensters geplaatst die zich in de bovenste groep bevinden. Het venster wordt wel vóór de andere vensters geplaatst. Als u de eigenschap voor een venster op zijn huidige waarde instelt, wordt de weergavevolgorde van vensters niet gewijzigd.

De instelling alwaysInFront heeft geen enkele invloed op vensters die het eigendom zijn van een ander venster.

orderToFront()

Hiermee plaatst u het venster op de voorgrond.

orderInFrontOf()

Hiermee plaatst u het venster direct vóór een bepaald venster.

orderToBack()

Hiermee plaatst u het venster achter alle andere vensters.

orderBehind()

Hiermee plaatst u het venster direct achter een bepaald venster.

activate()

Hiermee plaatst u het venster op de voorgrond (en bovendien wordt het venster zichtbaar en wordt de focus toegewezen aan het venster).

Opmerking: Als een venster verborgen is ( visible is false ) of geminimaliseerd, heeft het aanroepen van methoden om de weergavevolgorde te wijzigen, geen effect.

Bij het Linux-besturingssysteem dwingen verschillende vensterbeheerprogramma's verschillende regels af met betrekking tot de weergavevolgorde van vensters:

  • Bij bepaalde vensterbeheerprogramma's worden hulpprogrammavensters altijd weergegeven vóór normale vensters.

  • Bij bepaalde vensterbeheerprogramma's wordt een venster dat op het volledige scherm wordt weergegeven en waarvan alwaysInFront is ingesteld op true , altijd weergegeven vóór andere vensters waarvoor alwaysInFront ook is ingesteld op true .

Vensters sluiten

Als u een venster wilt sluiten, gebruikt u de methode NativeWindow.close() .

Als u een venster sluit, wordt de inhoud uit het venster verwijderd, maar als andere objecten verwijzingen naar deze inhoud bevatten, worden de inhoudsobjecten niet vernietigd. De methode NativeWindow.close() wordt asynchroon uitgevoerd. Dit betekent dat de toepassing die zich in het venster bevindt, actief blijft tijdens het sluiten van het venster. De methode close verzendt de gebeurtenis close wanneer het sluiten van het venster is voltooid. Het NativeWindow-object functioneert technisch gezien nog steeds, maar als u toegang probeert te krijgen tot eigenschappen en methoden van een gesloten venster, wordt er in de meeste gevallen een IllegalOperationError gegenereerd. U kunt een gesloten venster niet opnieuw openen. Controleer de eigenschap closed van een venster om na te gaan of een venster is gesloten. Als u een venster gewoon wilt verbergen, stelt u de eigenschap NativeWindow.visible in op false .

Als de eigenschap Nativeapplication.autoExit op true is ingesteld (dit is de standaardinstelling), wordt de toepassing afgesloten op het moment dat het laatste venster wordt gesloten.

Alle vensters met een eigenaar worden gesloten wanneer de eigenaar wordt gesloten. De eigendomvensters verzenden geen sluitgebeurtenis en kunnen het sluiten dus niet voorkomen. Er wordt een sluitgebeurtenis verzonden.

Het annuleren van vensterbewerkingen toestaan

Wanneer voor een venster het systeemchroom wordt gebruikt, kunt u de interactie van de gebruiker met het venster annuleren door te luisteren naar de juiste gebeurtenissen en hiervan het standaardgedrag te annuleren. Wanneer een gebruiker bijvoorbeeld op het sluitvak van het systeemchroom klikt, wordt de gebeurtenis closing verzonden. Als een geregistreerde listener de methode preventDefault() van de gebeurtenis aanroept, wordt het venster niet gesloten.

Wanneer voor een venster niet het systeemchroom wordt gebruikt, worden er ook niet automatisch meldingsgebeurtenissen voor aanstaande wijzigingen verzonden voordat de wijziging wordt aangebracht. Als u daarom de methoden voor het sluiten van een venster aanroept, waarbij de status van het venster wordt gewijzigd, of als u een van de eigenschappen van venstergrenzen instelt, kan de wijziging niet worden geannuleerd. Als u componenten in uw toepassing wilt waarschuwen voordat er een wijziging in een venster wordt aangebracht, kan de logica van uw toepassing de relevante meldingsgebeurtenis verzenden met de methode dispatchEvent() van het venster.

Met de volgende logica implementeert u bijvoorbeeld een annuleerbare gebeurtenishandler voor het sluitvak van een venster:

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

De methode dispatchEvent() retourneert de waarde false als de methode preventDefault() van de gebeurtenis door een listener wordt aangeroepen. Aangezien de methode echter ook om andere redenen de waarde false kan retourneren, is het beter om expliciet de methode isDefaultPrevented() te gebruiken om te controleren of de wijziging moet worden geannuleerd.

Vensters maximaliseren en minimaliseren, of het vorige formaat ervan herstellen

Als u het venster wilt maximaliseren, gebruikt u de methode maximize() van NativeWindow.

myWindow.maximize(); 

Als u het venster wilt minimaliseren, gebruikt u de methode minimize() van NativeWindow.

myWindow.minimize(); 

Als u het vorige formaat van het venster wilt herstellen (dat wil zeggen het formaat van het venster voordat het werd geminimaliseerd of gemaximaliseerd), gebruikt u de methode restore() van NativeWindow.

myWindow.restore(); 

Een venster met een eigenaar wordt verkleind tot pictogram en hersteld wanneer het eigenaarvenster wordt verkleind tot pictogram of hersteld. Er worden geen gebeurtenissen verzonden door het eigendomvenster als dit tot pictogram wordt verkleind, aangezien de eigenaar ook tot pictogram is verkleind.

Opmerking: Het gedrag dat wordt vertoond wanneer u een AIR-venster maximaliseert, verschilt van het standaardgedrag in Mac OS X. Er wordt niet geschakeld tussen het door de toepassing gedefinieerde 'standaardformaat' en het laatste formaat dat door de gebruiker is ingesteld. In plaats daarvan wordt bij een AIR-venster geschakeld tussen het laatste formaat dat door de toepassing is ingesteld en het volledige bruikbare gebied van het scherm.

Bij het Linux-besturingssysteem dwingen verschillende vensterbeheerprogramma's verschillende regels af met betrekking tot de weergavestatus van vensters:

  • Bij bepaalde vensterbeheerprogramma's kunnen vensters van hulpprogramma's niet worden gemaximaliseerd.

  • Als een maximumgrootte is ingesteld voor het venster, kunnen in sommige gevallen vensters niet worden gemaximaliseerd. Bepaalde andere vensterbeheerprogramma's stellen de weergavestatus in op gemaximaliseerd, maar wijzigen het formaat van het venster niet. In beide gevallen wordt er geen gebeurtenis betreffende de verandering van de weergavestatus verzonden.

  • Bepaalde vensterbeheerprogramma's negeren de vensterinstellingen maximizable of minimizable .

Opmerking: Bij Linux worden venstereigenschappen asynchroon gewijzigd. Als u de weergavestatus in één regel van uw programma wijzigt en de waarde in de volgende regel leest, zal de gelezen waarde nog steeds de oude instelling bevatten. Het NativeWindow-object verzendt op alle platforms de gebeurtenis displayStateChange wanneer de weergavestatus wordt gewijzigd. Als u een actie wilt uitvoeren op basis van de nieuwe status van het venster, moet u dit altijd doen in de gebeurtenishandler displayStateChange . Zie Luisteren naar venstergebeurtenissen .

Voorbeeld: een venster minimaliseren, maximaliseren, herstellen en sluiten

De volgende kleine MXML-toepassing laat zien hoe de methoden maximize() , minimize() , restore() en close() van Window werken:

<?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>

Met het volgende ActionScript-voorbeeld voor Flash worden vier tekstvelden gemaakt waarop kan worden geklikt en waarmee de methoden minimize() , maximize() , restore() en close() van NativeWindow kunnen worden geactiveerd:

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(); 
        } 
    } 
}

Het formaat van een venster wijzigen en het venster verplaatsen

Wanneer voor een venster het systeemchroom wordt gebruikt, biedt de interface sleepbesturingselementen waarmee u het vensterformaat kunt wijzigen en het venster op het bureaublad kunt verplaatsen. Als voor een venster niet het systeemchroom wordt gebruikt, moet u uw eigen besturingselementen toevoegen om het vensterformaat te wijzigen en het venster te verplaatsen.

Opmerking: Als u het formaat van een venster wilt wijzigen of een venster wilt verplaatsen, moet u eerst een verwijzing naar de NativeWindow-instantie opvragen. Zie NativeWindow-instanties opvragen voor informatie over het opvragen van een vensterverwijzing.

Het formaat van een venster wijzigen

Als u een gebruiker wilt toestaan het formaat van een venster interactief te wijzigen, gebruikt u de methode startResize() van NativeWindow. Als deze methode wordt aangeroepen vanuit een mouseDown -gebeurtenis, wordt het wijzigen van het vensterformaat door de muis gestuurd en is de bewerking voltooid wanneer het besturingssysteem de gebeurtenis mouseUp ontvangt. Als u startResize() aanroept, geeft u een argument door dat de rand of hoek aangeeft van waaruit het vensterformaat moet worden gewijzigd.

Als u de grootte van het venster wilt programmeren, stelt u de eigenschappen width , height of bounds van het venster in op de gewenste afmetingen. Wanneer u de grenzen instelt, kunt u de grootte en de positie van het venster ook wijzigen. Er is echter geen zekerheid dat deze veranderingen in een bepaalde volgorde zullen worden uitgevoerd. Bepaalde Linux-vensterbeheerprogramma's staan het niet toe dat vensters worden uitgebreid voorbij de randen van het scherm. In dergelijke gevallen is de uiteindelijke venstergrootte vaak beperkt door de volgorde waarin de eigenschappen worden ingesteld, zelfs als het nettoresultaat van de veranderingen een geldige venstergrootte aangeeft. Als u bijvoorbeeld zowel de hoogte als de y-positie van een venster bij de onderkant van het scherm wijzigt, wordt de volledige verandering van de hoogte mogelijk niet doorgevoerd wanneer de hoogte wordt veranderd vóór de verandering van de y-positie.

Opmerking: Bij Linux worden venstereigenschappen asynchroon gewijzigd. Als u het formaat van een venster in één regel van uw programma wijzigt en de afmetingen in de volgende regel leest, zullen de gelezen afmetingen nog steeds de oude instelling bevatten. Het NativeWindow-object verzendt de gebeurtenis resize op alle platforms wanneer het formaat van het venster wordt gewijzigd. Als u een actie wilt uitvoeren, zoals het lay-outen van besturingselementen in het venster, op basis van het nieuwe formaat of de nieuwe status van het venster, moet u dit altijd doen in de gebeurtenishandler resize . Zie Luisteren naar venstergebeurtenissen .

De schaalmodus van het werkgebied bepaalt hoe het werkgebied van het venster en de inhoud daarvan zich gedragen wanneer het formaat van het venster wordt gewijzigd. Houd er rekening mee dat de schaalmodi van het werkgebied zijn ontworpen voor situaties waarin de toepassing de grootte of hoogte-breedteverhouding van zijn weergaveruimte niet zelf kan bepalen (zoals in een webbrowser). U krijgt over het algemeen de beste resultaten door de eigenschap scaleMode van het werkgebied in te stellen op StageScaleMode.NO_SCALE . Als u wilt dat de inhoud van het venster wordt geschaald, kunt u nog steeds de parameters scaleX en scaleY van de inhoud instellen als reactie op wijzigingen in de venstergrenzen.

Vensters verplaatsen

Als u een venster wilt verplaatsen zonder het formaat ervan te wijzigen, gebruikt u de methode NativeWindow startMove() . Net als voor de methode startResize() geldt dat wanneer de methode startMove() wordt aangeroepen vanuit de gebeurtenis mouseDown , de bewerking (het verplaatsen van het venster) door de muis wordt gestuurd en is voltooid wanneer het besturingssysteem de gebeurtenis mouseUp ontvangt.

Zie de Naslaggids voor ActionScript 3.0 voor het Adobe Flash-platform voor meer informatie over de methoden startResize() en startMove() .

Als u een venster programmatisch wilt verplaatsen, stelt u de eigenschappen x , y of bounds van het venster in op de gewenste positie. Wanneer u de grenzen instelt, kunt u het formaat en de positie van het venster ook wijzigen.

Opmerking: Bij Linux worden venstereigenschappen asynchroon gewijzigd. Als u een venster in één regel van uw programma verplaatst en de positie in de volgende regel leest, zal de gelezen waarde nog steeds de oude instelling bevatten. Het NativeWindow-object verzendt op alle platforms de gebeurtenis move wanneer de positie wordt gewijzigd. Als u een actie wilt uitvoeren op basis van de nieuwe positie van het venster, moet u dit altijd doen in de gebeurtenishandler move . Zie Luisteren naar venstergebeurtenissen .

Voorbeeld: het formaat van vensters wijzigen en vensters verplaatsen

In het volgende voorbeeld ziet u hoe u bewerkingen zoals het wijzigen van het formaat of het verplaatsen, kunt starten voor een venster:

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(); 
        } 
    } 
}