Libgdx拥有一个设计非常好的生命周期以管理应用程序状态,比如创建,暂停和恢复,渲染和销毁应用程序。
ApplicationListener
应用开发者通过实现 ApplicationListener 接口并传入一个实现了应用的实例来挂接到生命周期事件,该应用实现了一个指定的后台 (seeThe Application Framework)。 从那里,应用程序会在每次应用层事件发生时调用这个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 () { } }
如果不是所有的接口方法都适宜,也可以使用ApplicationAdapter 类。
一旦传入应用程序,ApplicationListener方法会按照下面所示被调用:
Method signature | Description |
create () | 该方法只在应用创建时调用一次。 |
resize(int width, int height) | 该方法在每次游戏屏幕大小重新调整并且游戏不是暂停状态的情况下调用。它会在create()方法后调用一次。参数是被重新调整大小后新的屏幕宽高,单位是像素。 |
render () | 应用程序每次渲染时都循环调用。游戏逻辑的更新通常在该方法内执行。 |
pause () | Android中,该方法在Home按钮被按下或者接收了一个来电时调用。 桌面应用中,该方法仅在退出应用时在dispose()方法前执行。 这是一个保存游戏状态的好地方。 |
resume () | 该方法只在Android中,当应用程序从暂停状态恢复时调用。 |
dispose () | 当应用销毁时调用。在此方法前会执行一次 pause(). |
下面以图表示例该生命周期:
主循环在哪?
Libgdx 是事件驱动性质的,这主要是源于Android与Javascript的工作方式。它并不存在一个明确的主循环,然而,ApplicationListener.render() 方法可以认为是该主循环的主体。