libgdx アプリケーションには、アプリケーションを作成、一時停止、再開、描写、破棄といったアプリケーションの状態を管理するためにしっかりと定義されたライフサイクルがあります。
ApplicationListener インタフェースを実装し、そのインスタンスを特定のバックエンドのApplication
実装に引数として渡すことで(アプリケーションフレームワークを参照)、アプリケーション開発者はこれらライフサイクルイベントをアプリケーションに組み込みます。
そうすると、 Application
はアプリケーションレベルのイベントが発生する度に ApplicationListener
を呼び出します。
以下が、ApplicationListener
を実装する際の雛形です:
public class MyGame implements ApplicationListener { public void create () { } public void render () { } public void resize (int width, int height) { } public void pause () { } public void resume () { } public void dispose () { } }
One can also derive from the ApplicationAdapter class if not all interface methods are of relevance.
ApplicationListener
が引数として Application
へ渡されると、
ApplicationListener
のメソッドは以下のように呼び出されます:
メソッドシグネチャ | 説明 |
---|---|
create () |
アプリケーションが作成された時に1回呼び出されるメソッド。 |
resize(int width, int height) |
このメソッドは、ゲーム画面のサイズが変更されてなおかつゲームが一時停止状態でない場合に毎回呼び出されます。
またcreate() メソッドの後にも一回だけ呼びされます。各パラメータは変更された画面の新しい横幅と高さをピクセル単位で表したものです。 |
render () |
描写が実行される度にアプリケーションのゲームループから呼び出されるメソッド。ゲームロジックの更新は、通常はこのメソッド内でも実行されます。 |
pause () |
Android では、このメソッドはホームボタンが押されるか電話の着信を受けた場合に呼び出されます。
デスクトップでは、アプリケーションを終了した時の dispose() よりも前でだけ呼びされます。ゲームの状態を保存するのに良い位置です。 |
resume () |
このメソッドはアプリケーションが一時停止状態から再開した時、 Androidでのみ呼び出されます。 |
dispose () |
アプリケーションが破棄された時に呼び出されます。このメソッドはpause() が呼び出された後に呼び出されます。 |
以下の図はライフサイクルを視覚的に表したものです:
主にAndroidとJavaScriptの動作仕様が原因で、元々Libgdx はイベントドリブン形式で動作します。
明確なメインループというものは存在しませんが、
ApplicationListener.render()
メソッドをメインループのようなものとして見なすことができます。