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.