タグ : StageOrientationEvent

StageOrientationEvent 画面の向きが変わった時の処理について

[この記事はベータ版(2010/09/23版)でしか確認をとれていません。正式リリース後に変更されている可能性もありますので参考程度にご覧ください。]

デバイスを横に向けたり、縦に向けたりしたときにStageOrientationEventでイベントを受け取ることが出来ます。

プロパティのbeforeOrientation,afterOrientationを使って変化前,変化後の状態を取得することができました。
今のところよくわかっていませんが、手元のNexusOneでは状態が3種類あり、

  • default
  • rotatedRight
  • rotatedLeft

の3種類の状態が検知できました。
FlashCS5のairforandroid書き出しプラグインはデフォルトの設定portraitになっているので検出をアクティブにする為には、パブリッシュの設定を下の画像の赤い箇所を変更する必要があると思います。

検出用のサンプルスクリプトは以下になります。

package
{
	import flash.display.Sprite;
	import flash.events.StageOrientationEvent;
	import flash.text.TextField;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;

	import caurina.transitions.Tweener;

	public class Main extends Sprite
	{
		var txt:TextField;
		var sp:Sprite;

		public function Main()
		{
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;

			txt = new TextField();
			txt.autoSize = "left";
			txt.text = "orientation start \n";
			addChild(txt);

			sp = new Sprite();
			sp.graphics.beginFill(0xFF0000,0.2);
			sp.x = sp.y = 10;
			sp.graphics.drawRect(0, 0,
					stage.stageWidth - 100, stage.stageHeight - 100);
			addChild(sp);

			stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE,
									onOrientationChange);
		}

		private function onOrientationChange(e:StageOrientationEvent):void {

			//.beforeOrietationはデバイスの向き変化前の状態をgetできます。
			txt.appendText("beforeOrientation : " + e.beforeOrientation + "\n");
			//.afterOrientationはデバイスの向き変化後の状態をgetできます。
			txt.appendText("afterOrientation : " + e.afterOrientation + "\n\n");

			Tweener.addTween(sp, {
				width:stage.stageWidth - 100,
				height:stage.stageHeight - 100,
				time:1,
				transition:"linear"
			} );

		}
	}
}