Ручная ориентация

AIR 2.6 и более новые версии

Управлять ориентацией рабочей области можно с помощью метода 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() завершается неудачей без появления ошибки.