デバイスがステージの回転に対応しているか調べる
■デバイスがステージの回転に対応しているか調べる
「デバイスの物理的な向きの検出」と「ステージの回転」がサポートされているかを調べるには、
Stage.supportsOrientationChange プロパティを取得します。
true であれば利用できます。
デバイスがステージの回転に対応しているか調べる
import flash.display.Stage;
import flash.text.TextField;
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 10;
text_field.y = 10;
text_field.width = stage.stageWidth - 20;
text_field.height = 20;
text_field.border = true;
stage.addChild(text_field);
text_field.text = "ステージの回転のサポート:" + Stage.supportsOrientationChange;
ステージを自動的に回転する
サンプルをダウンロード
■ステージの自動回転を有効に設定する
「デバイスの物理的な向きにあわせて、ステージが自動回転する機能」を有効にするには、以下の設定を行います。
■Adobe Flash による設定方法
モバイル用の Adobe AIR の設定画面にある、「自動回転を有効にする」のチェックボックスをオンに変更します。
■アプリケーション記述ファイルを直接編集する方法
autoOrients タグを追加して true をセットします。
アプリケーション記述ファイルに autoOrients タグを追加する
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<application xmlns="http://ns.adobe.com/air/application/2.0">
<id>com.yourdomain.appname</id>
<version>1.0</version>
<filename>test</filename>
<description/>
<name>test</name>
<copyright/>
<initialWindow>
<content>test.swf</content>
<systemChrome>standard</systemChrome>
<transparent>false</transparent>
<visible>true</visible>
<fullScreen>false</fullScreen>
<aspectRatio>portrait</aspectRatio>
<renderMode>auto</renderMode>
<autoOrients>true</autoOrients>
</initialWindow>
<icon/>
<customUpdateUI>false</customUpdateUI>
<allowBrowserInvocation>false</allowBrowserInvocation>
<supportedProfiles>mobileDevice extendedMobileDevice</supportedProfiles>
</application>
■ステージの自動回転の設定が有効であるか調べる
ステージの自動回転の設定が有効であるかを調べるには、
stage.autoOrients プロパティを取得します。
true であれば、自動回転します。このプロパティは読み取り専用です。
ステージの自動回転が有効であるか調べる
import flash.text.TextField;
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 10;
text_field.y = 10;
text_field.width = stage.stageWidth - 20;
text_field.height = 20;
text_field.border = true;
stage.addChild(text_field);
text_field.text = "ステージの自動回転が有効か?:" + stage.autoOrients;
■ステージが回転した瞬間を調べる
「ステージの回転」が動作中であるかを調べるには、StageOrientationEvent.ORIENTATION_CHANGING イベントを使用します。
「ステージの回転」が動作完了したかを調べるには、StageOrientationEvent.ORIENTATION_CHANGE イベントを使用します。
回転前のステージの向きを調べるには、beforeOrientation プロパティを調べます。
回転後のステージの向きを調べるには、afterOrientation プロパティを調べます。
StageOrientation.* 定数が得られます。
定数 | 文字列 | 説明 |
StageOrientation. | "default" | デフォルトの方向 |
StageOrientation. | "rotatedLeft" | デフォルトの方向からステージを時計回りに 90 度回転させた状態 |
StageOrientation. | "upsideDown" | デフォルトの方向からステージを180 度回転させた状態 |
StageOrientation. | "rotatedRight" | デフォルトの方向からステージを反時計回りに 90 度回転させた状態 |
StageOrientation. | "unknown" | ステージの方向がまだ確定していない状態 |
ステージの自動回転を監視する
import flash.display.Stage;
import flash.text.TextField;
import flash.events.StageOrientationEvent;
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 10;
text_field.y = 10;
text_field.width = stage.stageWidth - 20;
text_field.height = 20;
text_field.border = true;
stage.addChild(text_field);
// ステージの回転をサポートしているか
if(Stage.supportsOrientationChange){
// 「ステージの回転」が動作中に実行されるイベント
stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING , function (e:StageOrientationEvent):void{
text_field.text = "ステージの回転が動作中" + " before:" + e.beforeOrientation + " after:" + e.afterOrientation;
});
// 「ステージの回転」が動作完了時に実行されるイベント
stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE , function (e:StageOrientationEvent):void{
text_field.text = "ステージの回転が動作完了" + " before:" + e.beforeOrientation + " after:" + e.afterOrientation;
});
}
■ステージの自動回転を無効化する
「ステージの回転」が動作中であるかを調べるには、StageOrientationEvent.ORIENTATION_CHANGING イベントを使用します。
ステージの回転を禁止するには、「このイベントに登録した関数」の引数から得られる、「StageOrientationEvent オブジェクトの preventDefault() メソッド」を呼び出し、デフォルトの動作をキャンセルします。
ステージの自動回転をキャンセルする
import flash.display.Stage;
import flash.events.StageOrientationEvent;
// ステージの回転をサポートしているか
if(Stage.supportsOrientationChange){
// 「ステージの回転」が動作中に実行されるイベント
stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING , function (e:StageOrientationEvent):void{
// ステージの自動回転が有効である
if(stage.autoOrients){
// イベントに割り当てられている「デフォルト動作」をキャンセルする
e.preventDefault();
}
});
}
ステージを手動的に回転する
サンプルをダウンロード
■デバイスがサポートする方向の一覧を調べる(Adobe AIR 2.6 以降)
デバイスがサポートする方向の一覧を調べるには、stage.supportedOrientations プロパティを使用します。
得られるデータの型は、Vector.<String> となります。(配列の中身は StageOrientation 定数)
デバイスがサポートする方向の一覧を調べる
import flash.text.TextField;
import flash.display.Stage;
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 10;
text_field.y = 10;
text_field.width = stage.stageWidth - 20;
text_field.height = 200;
text_field.border = true;
stage.addChild(text_field);
// ステージの回転をサポートしているか
if(Stage.supportsOrientationChange){
// デバイスがサポートする方向の一覧を取得
var orientations:Vector.<String> = stage.supportedOrientations;
// 配列の中身をテキストフィールドに列挙
var key:String;
var str:String = "";
for(key in orientations){
str += orientations[key] + "\n";
}
text_field.text = str;
}
■デバイスの現在の物理的な方向を調べる
デバイスの現在の物理的な方向を調べるには、stage.deviceOrientation プロパティを使用します。(読み取り専用)
StageOrientation.* 定数が得られます。
「ステージの自動回転」を無効に設定していてもこの値は更新されます。
定数 | 文字列 | 説明 |
StageOrientation. | "default" | デフォルトの方向 |
StageOrientation. | "rotatedLeft" | デフォルトの方向からデバイスを時計回りに 90 度回転させた状態 |
StageOrientation. | "upsideDown" | デフォルトの方向からデバイスを180 度回転させた状態 |
StageOrientation. | "rotatedRight" | デフォルトの方向からデバイスを反時計回りに 90 度回転させた状態 |
StageOrientation. | "unknown" | デバイスの方向がまだ確定していない状態 |
デバイスの現在の方向を調べる
import flash.text.TextField;
import flash.display.Stage;
import flash.events.Event;
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 10;
text_field.y = 10;
text_field.width = stage.stageWidth - 20;
text_field.height = 20;
text_field.border = true;
stage.addChild(text_field);
// ステージの回転をサポートしているか
if(Stage.supportsOrientationChange){
// 毎フレーム実行されるイベント
addEventListener(Event.ENTER_FRAME , function (e:Event):void{
text_field.text = "デバイスの方向:" + stage.deviceOrientation;
});
}
■ステージの現在の方向を調べる
ステージの現在の方向を調べるには、stage.orientation プロパティを使用します。(読み取り専用)
StageOrientation.* 定数が得られます。
定数 | 文字列 | 説明 |
StageOrientation. | "default" | デフォルトの方向 |
StageOrientation. | "rotatedLeft" | デフォルトの方向からステージを時計回りに 90 度回転させた状態 |
StageOrientation. | "upsideDown" | デフォルトの方向からステージを180 度回転させた状態 |
StageOrientation. | "rotatedRight" | デフォルトの方向からステージを反時計回りに 90 度回転させた状態 |
StageOrientation. | "unknown" | ステージの方向がまだ確定していない状態 |
ステージの現在の方向を調べる
import flash.text.TextField;
import flash.display.Stage;
import flash.events.Event;
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 10;
text_field.y = 10;
text_field.width = stage.stageWidth - 20;
text_field.height = 20;
text_field.border = true;
stage.addChild(text_field);
// ステージの回転をサポートしているか
if(Stage.supportsOrientationChange){
// 毎フレーム実行されるイベント
addEventListener(Event.ENTER_FRAME , function (e:Event):void{
text_field.text = "ステージの方向:" + stage.orientation;
});
}
■ステージを回転する
ステージを回転するには、setOrientation() メソッドを使用します。
引数に、StageOrientation.* 定数をセットします。
「デバイスの現在の物理的な方向」から、ステージを回転する例です。
「デバイスの現在の物理的な方向」から、ステージを回転する
import flash.display.Stage;
import flash.events.Event;
// ステージの回転をサポートしているか
if(Stage.supportsOrientationChange){
// 毎フレーム実行されるイベント
addEventListener(Event.ENTER_FRAME , function (e:Event):void{
switch(stage.deviceOrientation){
case StageOrientation.DEFAULT:
stage.setOrientation( StageOrientation.DEFAULT );
break;
case StageOrientation.ROTATED_LEFT:
stage.setOrientation( StageOrientation.ROTATED_RIGHT );
break;
case StageOrientation.UPSIDE_DOWN:
stage.setOrientation( StageOrientation.UPSIDE_DOWN );
break;
case StageOrientation.ROTATED_RIGHT:
stage.setOrientation( StageOrientation.ROTATED_LEFT );
break;
}
});
}