ページへ戻る

− Links

 印刷 

ActionScript 3​/Androidで全画面表示 :: XOOPS Cube Site

xpwiki:ActionScript 3/Androidで全画面表示

ページ内コンテンツ
  • Adobe AirでAndroidの全画面表示の問題
  • Full Screen ANE for Adobe AIR
    • 初期化
    • よく使うモード
      • デバイスで最適のフルスクリーンを実行
      • ステータスバーを消す
      • ステータスバーおよびナビゲーションも消す
  • まとめ

Adobe AirでAndroidの全画面表示の問題 anchor.png[1] Edit [2]

Adobe AirでAndroidアプリを製作するとき、Animate CCの「AIR for Android設定」でフルスクリーンモードにしたとき、stage.fullScreenWidth編集[3]やstage.fullScreenHeight編集[4]で取得し、それを元にレイアウトすると表示がずれることがあります。

これはAirで取得できるフルスクリーンのサイズは画面上下(横表示なら上と横)に表示されるAndroidのステータスバーやナビゲーションUIを含んだ画面のサイズだからです。

このあたりをうまく処理しようとすると、Androidのネイティブな処理が必要となるようなのですが、幸いフルスクリーンモードをうまく扱えるようにしてくれるANEが無料で公開されています。

Full Screen ANE for Adobe AIR[5]

このANEの機能でゲームでよく使いそうなものを解説します。

Page Top

Full Screen ANE for Adobe AIR anchor.png[6] Edit [7]

Page Top

初期化 anchor.png[8] Edit [9]

まず、app.xmlで

<fullScreen>false</fullScreen>

を定義するか、Animate CCなら「AIR for Android設定」で「フルスクリーンモードにする」のチェックを外します。

次に、

stage.displayState = StageDisplayState.NORMAL;

とします。 そして、ANEにステージを設定します。

AndroidFullScreen.stage = stage;
Page Top

よく使うモード anchor.png[10] Edit [11]

Page Top

デバイスで最適のフルスクリーンを実行 anchor.png[12] Edit [13]

fullScreen()でそのデバイスで一番無難なフルスクリーンモードを実行します。

AndroidFullScreen.fullScreen();

私の手持ちのデバイスでは、ステータスバーやナビゲーションを表示した状態となりました。 ただし、stage.fullScreenWidth編集[3]やstage.fullScreenHeight編集[4]は正しい値が入るようになるので、実行しないよりは使い勝手は良いです。

Page Top

ステータスバーを消す anchor.png[14] Edit [15]

上に出るステータスバーを消すには

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 Top

ステータスバーおよびナビゲーションも消す anchor.png[16] Edit [17]

ステータスバーも下や横に出るナビゲーションも消すには以下のメソッドを使います。

AndroidFullScreen.leanMode();

ただし、ナビゲーションが消えるといっても黒いバーは残ります。また、そのバーをタップするとステータスバーやナビゲーションが復帰し、画面の表示領域も変わります。

よってその場合のレイアウトなども用意する必要があります。

Page Top

まとめ anchor.png[18] Edit [19]

個人的にはゲームで使うにはステータスバーだけ消すのが一番便利と思います。また、setSystemUiVisibility編集[20]を使えばAndroidで使える画面モードを自由に動的に設定できます。

全体についての注意点として、

  • ナビゲーションを消した場合、それを復活させるとレイアウトが変わること
  • アプリをバックグラウンドにして復帰すると画面モードが変わることもある

があります。 そのため、テストは十分に行う必要があります。


Last-modified: 2018-06-12 (火) 13:54:08 (JST) (185d) by njf