[AS][iPhone]FlashBuilder4.5のActionScriptモバイルプロジェクトで横向き固定の設定をした場合のステージサイズを正しく取得する方法
前の記事の続き、
FlashBuilder4.5のActionScriptモバイルプロジェクトでの設定のお話。
まず横向き固定にする方向は、hoge-app.xmlに
<!-- hoge-app.xml内のinitialWindow要素に指定 --> <aspectRatio>landscape</aspectRatio>
を設定するだけでOK。
これでデバッグプレビューすると確かに横向きでプレビューされる。
が、stage.stageWidthは320、stage.stageHeightは480と変更されていない。
(ちなみにFlexモバイルプロジェクトの場合はstage.stageWidthは480、stage.stageHeightは320となり問題ないようす)
ではどうしたらいいか、
結論としては、ドキュメントクラスのコンストラクタに以下の一行を追加
stage.setAspectRatio(StageAspectRatio.PORTRAIT);
//前提で、hoge-app.xmlに<aspectRatio>landscape</aspectRatio>と設定 stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE; trace(stage.stageWidth, stage.stageHeight); //出力:320,480 stage.setAspectRatio(StageAspectRatio.PORTRAIT); trace(stage.stageWidth, stage.stageHeight); //出力:480,320
解せないのが、なぜPORTRAITなのか。
通常はPORTRAITは縦、LANDSCAPEは横をあらわすので、stage.setAspectRatio(StageAspectRatio.LANDSCAPE);と設定すればいいと思ったのだけど、これだとstage.stageWidthは320、stage.stageHeightは480のままとなった。
//前提で、hoge-app.xmlに<aspectRatio>landscape</aspectRatio>と設定 stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE; trace(stage.stageWidth, stage.stageHeight); //出力:320,480 stage.setAspectRatio(StageAspectRatio.LANDSCAPE); trace(stage.stageWidth, stage.stageHeight); //出力:320,480
解せぬ。
※2011.8.15追記
上記設定だと実機転送した際に横方向にはならない様子。。。
やはりsetAspectRatio()にはStageAspectRatio.LANDSCAPEを設定しないと横向き固定にはなりませんでした。
上に書いたLANDSCAPE設定での懸念されるステージサイズは、
trace(stage.stageWidth, stage.stageHeight); //出力:320,480
となっているようで実機起動上では特に問題なさげ。
ステージサイズがちゃんと取れないのはデバッグプレビューだけでのバグってことなのか!?
※2011.8.18追記
コメント欄にて教えていただきました。
stage.setOrientation(StageOrientation.DEFAULT)を設定することで想定したstageサイズを取得することができました。
//前提で、hoge-app.xmlに<aspectRatio>landscape</aspectRatio>と設定 stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE; trace(stage.stageWidth, stage.stageHeight); //出力:320,480 stage.setAspectRatio(StageAspectRatio.LANDSCAPE); stage.setOrientation(StageOrientation.DEFAULT); trace(stage.stageWidth, stage.stageHeight); //出力:480,320
Tweet
2 Comments
こんにちは、
stageサイズの件、ありがとうございました。
landscape時のサイズは
stage.setOrientation(StageOrientation.DEFAULT)
で取得しています。
設定したら幅と高さが正しくなりました!!
ありがとうございます!!!