libGDX的应用程序生命周期用来正确指定系统的不同状态。这些状态包括create,resize,render,pause,resume和dispose。
libGDX定义了一个ApplicationListener接口,它包含6个方法,分别对应一个系统状态,以下是其源代码,为了提高可读性,已经除去所有注释 :
public interface ApplicationListener { public void create (); public void resize (int width, int height); public void render (); public void pause (); public void resume (); public void dispose (); }
你需要在code project的主类中去实现所有的方法,libGDX将会在对的时间去调用它们。
【提示】你可以从http://www.packtpub.com.下载所有已购买的书的示例代码,如果你是在其他地方购买此书,你可以访问http://www.packtpub.com/support通过电子邮件获得。
下图展示了libGDX的生命周期 :
注意,上图中的实现和虚线具有类似功能,它们都连接着两个连续的系统状态并拥有一个表示方向的箭头,此外,一段虚线代表一个系统事件。
当一个应用程序被启动,它将从create()开始执行,应用将在这里进行所有初始化操作,例如加载资源到内存,创建初始状态的游戏世界。之后,将会调用resize(),应用程序将会第一次去调整其显示区域大小。
接下来,libGDX将会处理系统事件,如果没有事件发生,假设应用程序依然运行,下一步将会调用render(),在这期间应用程序主要做两件事:
• 更新游戏世界模型
• 根据游戏模型在屏幕上绘制相应的场景
然后,libGDX将会检测平台类型,在桌面端和WebGL端,应用程序的窗口可以随意调节大小。libGDX将将会周期性的比较上一时期和当前时期窗口的大小,仅在窗口大小发生变化时调用resize(),这确保应用程序可以适应窗口大小的变化。
现在,生命周期在处理系统事件前再次重启,有一个退出事件在运行时期发生,发生后,libGDX将会调用pause(),在这期间最好不要进行任何数据保存的操作。随后,libGDX将会调用dispose(),在这期间,你应该释放掉所有占用的资源。
这几乎也适用于Android,除了pause()是一个中间状态,其后不会直接跟随dispose()状态。pause事件可能发生于一个应用运行时期的任何时候,例如当用户按下Home键或有一个来电。事实上,paused状态的应用程序不会占用Android系统内存,其状态不会变为dispose(),此外,一个paused状态的应用程序可能接收到一个resume系统事件,在这种情况下其状态会变为resume(),最终会再次处理系统事件。
【完】
暂无关于此日志的评论。