Handmatige oriëntatie

AIR 2.6 en hoger

U regelt de oriëntatie van het werkgebied met de Stage-methode setOrientation() of setAspectRatio().

De oriëntatie van het werkgebied instellen

U kunt de oriëntatie van het werkgebied tijdens de runtime instellen met de methode setOrientation() van het Stage-object. Gebruik de tekenreeksconstanten die zijn gedefinieerd door de klasse StageOrientation om de gewenste oriëntatie op te geven:

this.stage.setOrientation( StageOrientation.ROTATED_RIGHT );
Niet elk apparaat en besturingssysteem ondersteunt elke mogelijke oriëntatie. Zo biedt Android 2.2 bijvoorbeeld via de programmacode geen ondersteuning voor het kiezen van de links geroteerde oriëntatie op Staand/Liggende apparaten en wordt het ondersteboven draaien helemaal niet ondersteund. De eigenschap supportedOrientations van het werkgebied verschaft een lijst met oriëntaties die kunnen worden doorgegeven aan de methode setOrientation():
var orientations:Vector.<String> = this.stage.supportedOrientations; 
for each( var orientation:String in orientations ) 
{ 
    trace( orientation ); 
}

De hoogte-breedteverhouding van het werkgebied instellen

Als de hoogte-breedteverhouding van het werkgebied voor u het belangrijkst is, kunt u deze verhouding instellen op Staand of Liggend. U kunt de breedte-hoogteverhouding instellen in het AIR-toepassingsbeschrijvingsbestand of tijdens de runtime met de Stage-methode setAspectRatio():

this.stage.setAspectRatio( StageAspectRatio.LANDSCAPE );

De runtime kiest een van de twee mogelijke oriëntaties voor de opgegeven breedte-hoogteverhouding. Deze komt wellicht niet overeen met de huidige oriëntatie van het apparaat. Zo wordt bijvoorbeeld de standaardoriëntatie gekozen in plaats van ondersteboven (AIR 3.2 en lager), en de oriëntatie die geschikt is voor het uitschuifbare toetsenbord in plaats van de tegenovergestelde oriëntatie.

(AIR 3.3 en hoger) Vanaf AIR 3.3 (SWF-versie 16) kunt u ook de constante StageAspectRatio.ANY gebruiken. Als Stage.autoOrients is ingesteld op true en u setAspectRatio(StageAspectRatio.ANY) aanroept, kan uw toepassing zich aan alle oriëntaties aanpassen (Liggend-links, Liggend-rechts, Staand en Staand-ondersteboven). Nieuwe kenmerken van AIR 3.3 zijn de permanente hoogte-breedteverhouding en het feit dat extra rotaties van het apparaat beperkt worden tot de opgegeven oriëntatie.

Voorbeeld: de oriëntatie van het werkgebied afstemmen op de oriëntatie van het apparaat

Het volgende voorbeeld illustreert een functie die de oriëntatie van het werkgebied aanpast aan de huidige oriëntatie van het apparaat. De stage-eigenschap deviceOrientation geeft de fysieke oriëntatie van het apparaat aan, ook als de automatische oriëntatie is uitgeschakeld.

function refreshOrientation( theStage:Stage ):void 
{ 
    switch ( theStage.deviceOrientation ) 
    { 
        case StageOrientation.DEFAULT: 
            theStage.setOrientation( StageOrientation.DEFAULT ); 
            break; 
        case StageOrientation.ROTATED_RIGHT: 
            theStage.setOrientation( StageOrientation.ROTATED_LEFT ); 
            break; 
        case StageOrientation.ROTATED_LEFT: 
            theStage.setOrientation( StageOrientation.ROTATED_RIGHT ); 
            break; 
        case StageOrientation.UPSIDE_DOWN: 
            theStage.setOrientation( StageOrientation.UPSIDE_DOWN ); 
            break; 
        default: 
            //No change              
    } 
}

De oriëntatie wordt asynchroon gewijzigd. U kunt naar de door het werkgebied verzonden gebeurtenis orientationChange luisteren om te zien of de wijziging is uitgevoerd. Als een oriëntatie niet wordt ondersteund op een apparaat, mislukt de aanroep setOrientation() zonder dat een fout wordt gemeld.