The life cycle - garsue/libgdx GitHub Wiki
libgdxアプリケーションにはよく考えられたライフサイクルがあり, アプリケーションの生成, ポーズと復帰, 描画と破棄といったアプリケーションの状態を管理しています.
アプリケーション開発者はこれらのライフサイクルのイベントを ApplicationListener インターフェイスを実装し, 特定のバックエンドの Application
の実装(アプリケーションフレームワークを参照してください)にインスタンスを渡すことでフックできます. つまり Application
はアプリケーションレベルでイベントが発生するごとに ApplicationAdapter
を呼び出します. 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 () {
}
}
すべてのインターフェイスメソッドが関係するわけではない場合, ApplicationAdapter クラスの派生クラスを作成するという方法もあります.
ApplicationListener
が Application
に渡されると, そのメソッドは次のように呼び出されます:
メソッドシグニチャ | 解説 |
---|---|
create () |
このメソッドはアプリケーションが生成されたときに一度だけ呼び出されます. |
resize(int width, int height) |
このメソッドはゲームがポーズ状態でないときにゲーム画面がリサイズされると毎回呼び出されます. また create() メソッドのあとでも一度呼び出されます.パラメータはリサイズ後のスクリーンのピクセル単位の新しい幅と高さです. |
render () |
このメソッドは描画されるたびにアプリケーションからゲームループによって呼び出されます. たいていの場合ゲームロジックもこのメソッドで実行されます. |
pause () |
Androidではこのメソッドはホームボタンが押されたとき, または着信があったときに呼び出されます. デスクトップではアプリケーション終了時, dispose() の前に呼び出さるだけです.ゲームの状態を保存するタイミングとしてちょうどいいです. |
resume () |
このメソッドはアプリケーションがポーズから復帰したときに呼び出されます. このメソッドが呼ばれるのはAndroidだけです. |
dispose () |
アプリケーションが破棄されるときに呼ばれます. このメソッドが呼び出される前に pause() が呼び出されます. |
以下のダイアグラムはライフサイクルを図示したものです.
libgdxはAndroidとJavaScriptの動作方法に合わせているため, 最初からイベント駆動になっています. 明示的なメインループは存在しませんが, ``ApplicationListener.render()` メソッドはメインループの本体としてみなせます.