手動の方向設定

AIR 2.6 以降

Stage オブジェクトの setOrientation() メソッドまたは setAspectRatio() メソッドを使用してステージの方向を制御できます。

ステージの方向の設定

Stage オブジェクトの setOrientation() メソッドを使用して、実行時にステージの方向を設定できます。必要な方向を指定するには、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 ); 
}

ステージの縦横比の設定

ステージの縦横比については、縦横比を縦長または横長に設定できます。Stage オブジェクトの setAspectRatio() メソッドを使用することで、AIR アプリケーション記述子に、または実行時に縦横比を設定できます。

this.stage.setAspectRatio( StageAspectRatio.LANDSCAPE );

ランタイムでは、指定された縦横比に対して 2 つの方向のいずれかを選択します。これは、現在のデバイスの方向と一致しない場合があります。例えば、上下反転の方向よりも、デフォルトの方向が優先して選択され(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 イベントをリッスンして、変更の完了を検出することができます。方向がデバイスでサポートされていない場合は、エラーをスローせずに setOrientation() の呼び出しが失敗します。