Es posible controlar la orientación del escenario con los métodos
setOrientation()
o
setAspectRatio()
del objeto Stage.
Definición de la orientación del escenario
Puede definir la orientación del escenario en tiempo de ejecución con el método
setOrientation()
del objeto Stage. Utilice las constantes de cadena definidas por la clase StageOrientation para especificar la orientación que desee:
this.stage.setOrientation( StageOrientation.ROTATED_RIGHT );
No todos los dispositivos y sistemas operativos admiten todas las orientaciones posibles. Por ejemplo, la programación de Android 2.2 no permite elegir mediante programación la orientación girada a la izquierda en dispositivos con orientación estándar vertical ni permite la orientación invertida en ningún caso. La propiedad
supportedOrientations
del escenario ofrece una lista con las orientaciones que pueden transferirse al método
setOrientation()
:
var orientations:Vector.<String> = this.stage.supportedOrientations;
for each( var orientation:String in orientations )
{
trace( orientation );
}
Definición de la relación de aspecto del escenario
Si lo que más le importa es la relación de aspecto del escenario, puede definirla en vertical o en horizontal. Puede definir la relación de aspecto en el descriptor de la aplicación de AIR o, en tiempo de ejecución a través del método
setAspectRatio()
del objeto Stage:
this.stage.setAspectRatio( StageAspectRatio.LANDSCAPE );
El motor de ejecución seleccionará una de las dos orientaciones posibles para la relación de aspecto especificada. Puede no coincidir con la orientación actual del dispositivo. Por ejemplo, la orientación predeterminada se elige con orientación normal como preferencia (AIR 3.2 y versiones anteriores) y la orientación adecuada para el teclado virtual se selecciona con orientación contraria a la preferente.
(AIR 3.3 y versiones posteriores)
A partir de AIR 3.3 (SWF versión 16), también es posible utilizar la constante
StageAspectRatio.ANY
. Si
Stage.autoOrients
se establece en
true
y se llama a
setAspectRatio(StageAspectRatio.ANY)
, la aplicación puede reorientar todas las orientaciones (horizontal-izquierda, horizontal-derecha, vertical y vertical-al revés). Otra novedad de AIR 3.3 es que la relación de aspecto se mantiene y la rotación adicional del dispositivo se limita a la orientación especificada.
Ejemplo: Definición de la orientación del escenario para coincidir con la del dispositivo
El siguiente ejemplo muestra una función que actualiza la orientación del escenario para que coincida con la orientación actual del dispositivo. La propiedad
deviceOrientation
del escenario indica la orientación física del dispositivo, incluso si está desactivada la orientación automática.
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
}
}
El cambio de orientación es asíncrono. Es posible detectar el evento
orientationChange
distribuido por el escenario para detectar la finalización del cambio. Si un dispositivo no admite una orientación, la llamada
setOrientation()
falla sin emitir un error.
|
|
|