应用生命周期

我们使用各种GUI框架的都知道,一个桌面窗口,或是Web、移动端的页面,它们从创建到销毁,都遵循一个生命周期。针对这些生命周期,GUI框架一般都会提供一组可重写的回调(钩子)函数,用来监听窗口的状态,LibGDX其实也相当于这样一个GUI软件的窗口。

ApplicationListener和ApplicationAdapter

默认创建工程后,core模块下MyGdxGame类继承ApplicationAdapter,间接实现了ApplicationListener接口。其中的render()函数就是游戏的主循环。

public class MyGdxGame extends ApplicationAdapter { ... }

该接口定义了LibGDX应用窗口的生命周期:

各个回调函数都很好理解,我们可以自己写代码测试一下,这里就不多介绍了。

注:这里框架使用了适配器模式,如果我们直接实现ApplicationListener,就会造成必须实现接口中所有方法的尴尬状况,所以LibGDX又给我们创建了一个ApplicationAdapter作为适配器,其中的实现都是空的。

窗口的生命周期流程

ApplicationAdapter和Game类的关系

实际上,真正开发中我们不会写类似上面的代码,类似Unity引擎有Game->Scene->GameObject这种层次结构,LibGDX中也有Game->Screen->Stage->Actor的层次结构,我们一般继承Game作为整个应用的入口类,而Game本身也是ApplicationAdapter,生命周期都是相似的,但是它提供了方法能直接和场景层次结构集成到一起。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap