イナヅマTVログ

AIR for iOS の ActionScript Mobile Project はステージサイズがおかしい、と思ったのはまちがいでした

| 2件のコメント

Flash Builder 4.5.1, Flex 4.5.1 + AIR 2.7 でのお話。
*Flex 4.5.1 SDK に AIR 2.7 を別途ダウンロードし上書きしています。

4.5.1 アップデートでコマンドラインを使わなくてもGUIで AIR for iOS のデバックとリリースビルドの制作ができるようになったので早速ためしに使いはじめたけど、さっそく地雷を踏んでしまいました。

ActionScript Mobile Project だとステージサイズがおかしい

ActionScript Mobile Projectで作成するとstageサイズがどうも取得できないみたい。
550 x 370 としか取得できない。
(0, 0)ポイントにShapeを置いても位置が変だし、座標系もおかしくなっている様子。
あれま!
今日試してみたら座標は正常だった???

iPhone3GS simulate

iPhone3GS simulate

iPhone4 simulate

iPhone4 simulate

ステージサイズが550 x 370なのでこんなになっちゃいます。

試したコードはこちら。

package
{
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
 
	public class AIR27TestStageSize extends Sprite
	{
		public function AIR27TestStageSize()
		{
			super();
 
			// support autoOrients
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
 
			init();
		}
 
		private function init():void
		{
			var bg:Shape = new Shape();
			bg.graphics.clear();
			bg.graphics.beginFill(0xffff00);
			bg.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
			bg.graphics.endFill();
 
			addChild(bg);
 
			var circle:Shape = new Shape();
			circle.graphics.clear();
			circle.graphics.beginFill(0x333333);
			circle.graphics.drawCircle(stage.stageWidth * 0.5, stage.stageHeight * 0.5, 16);
			circle.graphics.endFill();
 
			addChild(circle);
 
			trace(stage.stageWidth, stage.stageHeight);
		}
	}
}

でもこれって誰でも同じようになるなら世界中で大問題になりそうだけどhttp://bugs.adobe.com/jira/にもないし、なんか設定しくじってんだろうなぁ。
お初なのでコチラが間違っているとかあるかもかもかもです。

Flex Mobile Projectだとステージサイズは正確

原因が分かるまではFlex Mobile Projectで作成することにします。

update 2011-08-17
コメントいただいた393さんのご指摘により解決することができました。
http://memo.393.bz/archives/1585

stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;

stage.displayStateStageDisplayState.FULL_SCREEN_INTERACTIVEを設定すると正しいstageサイズを取得できました。

Adobe : フルスクリーンウィンドウの表示

stage.displayState = StageDisplayState.FULL_SCREEN;

StageDisplayState.FULL_SCREENでもstageサイズは取得できるけど「このモードでは、キーボード操作は無効になります」なのでまずいんだろな。

2件のコメント

  1. こんにちは。

    >Actionscript Mobile Project だとステージサイズがおかしい

    ボクもこれでえらい悩んだのですが、以下の1行を入れるとステージサイズで正常の値を返してくれるようになるっぽいです。
    stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;

    ↓の記事にそれっぽいことが書いてあるようです(ちゃんと全部は読んでませんが。。)
    http://www.randytroppmann.com/2011/04/12/pure-as3-workflow-with-flex-builder-4-5/

  2. ありがとうございます。
    試してみます。

コメントを残す

必須欄は * がついています