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 ); }
ぺージ情報 | |
---|---|
ぺージ名 : | ActionScript 3/Androidで全画面表示 |
ページ別名 : | 未設定 |
ページ作成 : | njf |
閲覧可 | |
グループ : | すべての訪問者 |
ユーザー : | すべての訪問者 |
編集可 | |
グループ : | すべての訪問者 |
ユーザー : | すべての訪問者 |