Adobe AirでAndroidの全画面表示の問題
Adobe AirでAndroidアプリを製作するとき、Animate CCの「AIR for Android設定」でフルスクリーンモードにしたとき、stage.fullScreenWidthやstage.fullScreenHeight
で取得し、それを元にレイアウトすると表示がずれることがあります。
これはAirで取得できるフルスクリーンのサイズは画面上下(横表示なら上と横)に表示されるAndroidのステータスバーやナビゲーションUIを含んだ画面のサイズだからです。
このあたりをうまく処理しようとすると、Androidのネイティブな処理が必要となるようなのですが、幸いフルスクリーンモードをうまく扱えるようにしてくれるANEが無料で公開されています。
このANEの機能でゲームでよく使いそうなものを解説します。
初期化
まず、app.xmlで
<fullScreen>false</fullScreen>
を定義するか、Animate CCなら「AIR for Android設定」で「フルスクリーンモードにする」のチェックを外します。
次に、
stage.displayState = StageDisplayState.NORMAL;
とします。 そして、ANEにステージを設定します。
AndroidFullScreen.stage = stage;
デバイスで最適のフルスクリーンを実行
fullScreen()でそのデバイスで一番無難なフルスクリーンモードを実行します。
AndroidFullScreen.fullScreen();
私の手持ちのデバイスでは、ステータスバーやナビゲーションを表示した状態となりました。
ただし、stage.fullScreenWidthやstage.fullScreenHeight
は正しい値が入るようになるので、実行しないよりは使い勝手は良いです。
ステータスバーを消す
上に出るステータスバーを消すには
AndroidFullScreen.setSystemUiVisibility(AndroidFullScreen.SYSTEM_UI_FLAG_FULLSCREEN );
とします。ゲームでは一番使いやすいモードです。 ただし、アプリをバックグラウンドに回して再びフォアグラウンドにすると、ステータスバーが出てしまうようです。そのため、フォアグラウンドに回ったときに再び実行する必要があります。
NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE, onActivateHandler);
private function onActivateHandler(e:Event):void { AndroidFullScreen.setSystemUiVisibility(AndroidFullScreen.SYSTEM_UI_FLAG_FULLSCREEN ); }
Page Info | |
---|---|
Page Name : | ActionScript 3/Androidで全画面表示 |
Page aliases : | None |
Page owner : | njf |
Can Read | |
Groups : | All visitors |
Users : | All visitors |
Can Edit | |
Groups : | All visitors |
Users : | All visitors |