《libGDX移动游戏开发从入门到精通》一2.1 生命周期

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

本节书摘来异步社区《libGDX移动游戏开发从入门到精通》一书中的第2章,第2.1节,作者: 黄俊东 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.1 生命周期

无论是Android原生应用,还是libGDX应用,都有生命周期的概念。它管理着一个应用的各个状态,如应用的创建、重新开始、暂停以及销毁。

2.1.1 libGDX中生命周期的图示

libGDX的生命周期的流程图与Android原生的生命周期流程图很像,从图2.7可以看到,libGDX是架构在Android平台之上的,libGDX很多东西都对Android做了封装。libGDX的生命周期流程图如图2.1所示。


2_1


从图2.1可以看出,当一个libGDX应用开始运行的时候,它首先会调用create()方法,接着调用resize()方法,接下来libGDX应用就正常运行了,它在运行的时候每一帧都会调用render()方法来进行渲染。以下是在运行时可能出现的两种常见情况,以及对应的生命周期流程:

1.libGDX应用失去焦点。这时会调用pause()方法,当libGDX再次获得焦点,会调用resume()函数,游戏重新回到正常运行的状态。

2.退出libGDX应用。这时候会调用pause()方法,接着调用dispose(),最后libGDX应用就退出了。

2.1.2 生命周期中各个函数的分析

表2.1列举了libGDX生命周期中的各个函数,并且对其作用做了较为详细的描述。


b2_1

2.1.3 实例:通过例子深刻理解生命周期

2.1.1小节与2.1.2小节已经给大家讲解了生命周期的一些理论知识,那么以下通过一个小例子来加深对生命周期中的理解。以下的例子中,主要是在生命周期中的每一个方法里面都加了一个log(日志),用于研究每一个方法的调用时机。(这个例子中,MainAcitivity的代码HelloWorld中是一样的,不一样的是MyGame这个类里面的代码书写。)

以下这个例子,用于在控制台中输出日志,研究libGDX生命周期中各个方法的调用时机。让大家更好地理解图2.1中的内容。其中就只用到了MyGame这个类,分别在生命周期中所涉及的方法create( )、dispose( )、pause( )、render( )、resize( )、resume( )中都加上了一个打印语句System.out。

public class MyGame implements ApplicationListener {
   @Override
   public void create() {
     System.out.println("------->create()");//在控制台中输出日志
   }
   @Override
   public void dispose() {
     System.out.println("------->dispose()");//在控制台中输出日志
   }
   @Override
   public void pause() {
     System.out.println("------->pause()");//在控制台中输出日志
   }
   @Override
   public void render() {
     Gdx.gl.glClearColor(1, 1, 1, 1);//把屏幕设置成白色
     Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);//清屏
   }
     @Override
   public void resize(int arg0, int arg1) {
     System.out.println("------->resize()");//在控制台中输出日志
   }
     @Override
   public void resume() {
     System.out.println("------->resume()");//在控制台中输出日志
   }
}

(1)运行程序(运行程序的操作在第1章已经讲解得很细致了,这里不再赘述)。可以看到Logcat中打印出以下log,如图2.2所示。


2_2

(2)单击Back键。会看到在Logcat中打印出以下log,如图2.3所示。


2_3

(3)再次进入应用。单击HOME键,这时Logcat上会出现以下log,如图2.4所示。


2_4

(4)再单击HOME键之后,进入应用,那么这时候Logcat中打印出以下log,如图2.5所示。


2_5

通过以上的实验,再在脑海中回顾一下2.1.1小节中介绍到的生命周期的流程图,我们对libGDX的生命周期的理解又深了一点。

大家可以看到,render( )函数中并没有打印日志的代码,假如给它加上一个打印日志的代码,那么在Logcat中看到的log,如图2.6所示。

因为render( )方法是每一帧都会调用的,所以Logcat中不断地产生日志。


2_6

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
AI剧本生成与动画创作:能否成为短视频创作的革命性工具?
《AI剧本生成与动画创作》解决方案结合自然语言处理与深度学习技术,能自动生成剧本并转化为动画,极大提升创作效率,降低门槛。部署过程需约3小时,适合非专业用户快速响应热点内容。尽管在创意和细节上仍存不足,但已为短视频创作者提供高效路径,值得尝试。未来,随着技术进步,AI创作工具将带来更多惊喜。
464 10
AI剧本生成与动画创作:能否成为短视频创作的革命性工具?
|
自然语言处理 搜索推荐 Python
中文文本处理高手指南:从零到高手掌握Python中jieba库
中文文本处理高手指南:从零到高手掌握Python中jieba库
613 0
|
9月前
|
机器学习/深度学习 人工智能 自动驾驶
今日热门论文推荐:MM-Eureka、FedRand、EasyControl、FEA-Bench
由Skolkovo科技学院等机构提出的这项研究,聚焦于人工智能文本检测(ATD)的可解释性提升。利用Sparse Autoencoders(SAE)从Gemma-2-2b模型中提取特征,该工作揭示了现代大语言模型(LLM)与人类文本的差异,尤其是在信息密集领域,展现了独特的写作风格,为ATD提供了新的见解和方法。
179 14
|
10月前
|
安全 数据安全/隐私保护
如何制作劳务人员实名制管理二维码?
在建筑行业,二维码技术正革新人员管理方式。通过为每位工人配备专属二维码,企业可实时掌握其身份、培训和安全状况,简化信息录入与查询流程,提升管理精度与效率,降低安全风险。典型应用案例包括中建三局、中铁上海局等企业,通过二维码实现智能化、精细化管理。制作实名制二维码简单快捷,涵盖信息收集、登录草料二维码官网、批量生成及打印发放等步骤。此外,二维码还在设备管理、区域巡查、信息展示和安全生产教育等方面发挥重要作用,助力企业实现数字化转型,提升整体工作效率与安全性。
|
机器学习/深度学习 人工智能 监控
探索人工智能在医疗健康领域的创新应用
探索人工智能在医疗健康领域的创新应用
|
人工智能 监控 物联网
探索信息技术的前沿:推动社会进步与创新的强大力量
探索信息技术的前沿:推动社会进步与创新的强大力量
417 3
|
JSON 数据可视化 小程序
uview/小程序可视化表单代码生成器文档
uview/小程序可视化表单代码生成器文档
229 0
GoDaddy用支付宝付款时出现我们无法处理这笔交易,请查看您的付款信息并重试。...
GoDaddy用支付宝付款时出现我们无法处理这笔交易,请查看您的付款信息并重试。...
498 0
|
小程序 开发者
微信小程序发布新版本,如何提示强制更新!
微信小程序发布新版本,如何提示强制更新!
微信小程序发布新版本,如何提示强制更新!
|
存储 人工智能 边缘计算
大热!阿里云AIoT客流分析系统已经覆盖全国10城
1月21日,阿里云AIoT宣布旗下产品客流分析系统已经覆盖上海、北京、杭州等全国10余座城市,其中,在甘肃、安徽两省,阿里云AIoT客流分析系统已经为超百家门店,提供客流数字化升级服务。
692 1
大热!阿里云AIoT客流分析系统已经覆盖全国10城

热门文章

最新文章