《libGDX移动游戏开发从入门到精通》一2.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可以看出,当一个libGDX应用开始运行的时候,它首先会调用create()方法,接着调用resize()方法,接下来libGDX应用就正常运行了,它在运行的时候每一帧都会调用render()方法来进行渲染。以下是在运行时可能出现的两种常见情况,以及对应的生命周期流程:
1.libGDX应用失去焦点。这时会调用pause()方法,当libGDX再次获得焦点,会调用resume()函数,游戏重新回到正常运行的状态。
2.退出libGDX应用。这时候会调用pause()方法,接着调用dispose(),最后libGDX应用就退出了。
2.1.2 生命周期中各个函数的分析表2.1列举了libGDX生命周期中的各个函数,并且对其作用做了较为详细的描述。
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)单击Back键。会看到在Logcat中打印出以下log,如图2.3所示。
(3)再次进入应用。单击HOME键,这时Logcat上会出现以下log,如图2.4所示。
(4)再单击HOME键之后,进入应用,那么这时候Logcat中打印出以下log,如图2.5所示。
通过以上的实验,再在脑海中回顾一下2.1.1小节中介绍到的生命周期的流程图,我们对libGDX的生命周期的理解又深了一点。
大家可以看到,render( )函数中并没有打印日志的代码,假如给它加上一个打印日志的代码,那么在Logcat中看到的log,如图2.6所示。
因为render( )方法是每一帧都会调用的,所以Logcat中不断地产生日志。
《Unity开发实战》——导读 本节书摘来自华章社区《Unity开发实战》一书中的目录,作者 (爱尔兰)Matt Smith (巴西)Chico Queiroz,更多章节内容可以访问云栖社区“华章社区”公众号查看
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
相关文章
- Web开发入门
- Knockout应用开发指南 第一章:入门
- 【推荐系统】知乎live入门5.常用技能与日常工作
- Nginx开发从入门到精通
- go语言快速开发入门示例
- Eclipse开发Java程序入门,HelloWord
- 最新Android音视频开发进阶指北,音视频入门必备
- 微搭低代码从入门到精通07-基础布局组件
- Clickhouse入门学习、单机、集群安装部署
- Wireshark入门与进阶---数据包捕获与保存的最基本流程
- Java开发入门到精通之Java中重写和重载的区别
- Java开发入门到精通之最常见的五个问题
- 【iVX 开发 - 入门】开发环境、应用对象树介绍(含操作演示)
- 微信小程序云开发入门实践
- 【前端】html+js+css开发入门超详细介绍
- 【深度学习入门案例】波士顿房价预测
- HTTP 必备干货学习,一篇HTTP入门 不收藏都可惜!
- p10.第一章 Python基础入门 -- 习题详解(十)
- DSA 经典数据结构与算法 学习心得和知识总结(二) |散列 从小白初级入门到大佬全知全会(实质已然崩溃)
- 嵌入式开发----示波器入门