Управлять ориентацией рабочей области можно с помощью метода
setOrientation()
или
setAspectRatio()
объекта Stage.
Установка ориентации рабочей области
Ориентацию рабочей области можно задать во время выполнения с помощью метода
setOrientation()
объекта Stage. Чтобы выбрать нужную ориентацию используйте строковые константы, определенные в классе StageOrientation.
this.stage.setOrientation( StageOrientation.ROTATED_RIGHT );
Не все устройства и операционные системы поддерживают все возможные ориентации. Например, Android 2.2 не поддерживает программный выбор ориентации с поворотом влево на устройствах со стандартной книжной ориентацией и вообще не поддерживает ориентацию вверх ногами. Свойство
supportedOrientations
рабочей области содержит список вариантов ориентации, которые могут быть переданы методу
setOrientation()
:
var orientations:Vector.<String> = this.stage.supportedOrientations;
for each( var orientation:String in orientations )
{
trace( orientation );
}
Установка соотношения сторон рабочей области
Если основное значение отдается соотношению сторон рабочей области, можно задать для нее книжное или альбомное соотношение сторон. Соотношение сторон можно задать в дескрипторе приложения AIR или во время выполнения с помощью метода
setAspectRatio()
объекта Stage.
this.stage.setAspectRatio( StageAspectRatio.LANDSCAPE );
Среда выполнения выбирает одну из двух возможных ориентаций для указанного соотношения сторон. Она может не соответствовать текущей ориентации устройства. Например, по умолчанию в настройках выбрана перевернутая ориентация (AIR 3.2 и более ранних версий), а для выдвижной клавиатуры в настройках выбрана противоположная ориентация.
(AIR 3.3 и более поздних версий)
Начиная с версии AIR 3.3 (SWF версии 16) можно также использовать константу
StageAspectRatio.ANY
. Если для параметра
Stage.autoOrients
установлено значение
true
и вызывается
setAspectRatio(StageAspectRatio.ANY)
, приложение может переориентироваться по всем направлениям (альбомная-влево, альбомная-вправо, книжная и книжная-перевернутая). Кроме того, нововведением AIR 3.3 является то, что пропорции являются постоянными, и в дальнейшем поворот устройства выполняется только с указанной ориентацией.
Пример: установка ориентации рабочей области в соответствии с ориентацией устройства.
В следующем примере демонстрируется функция, которая обновляет ориентацию рабочей области в соответствии с текущей ориентацией устройства. Свойство рабочей области
deviceOrientation
указывает физическую ориентацию устройства даже в том случае, если отключена автоматическая ориентация.
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
}
}
Изменение ориентации выполняется асинхронно. Можно прослушивать событие
orientationChange
, отправляемое объектом Stage, для определения завершения изменения. Если устройство не поддерживает ориентацию, вызов
setOrientation()
завершается неудачей без появления ошибки.
|
|
|