《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.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)单击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中不断地产生日志。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
动画壁纸 LiveWallpaper 0.3
Ubuntu 系统本身的桌布功能已经非常不错了,基本上我们能想到的对桌布的需求也都可以实现。默认的几张壁纸也看得非常让我们轻松愉悦。 不过,用户的需求总是会不断的发展和出乎大多数的需求的,有很多人就希望能有动态的桌面。一般按我们的理解,系统本身就支持自动换桌布,而且你也可以弄个动画 gif 图来看看效果。不过就像很多特殊的主题一样,要在桌面上实现类似视频动画的效果,那就得借助一些其他的软件了,系统本身还做不到(要求 Ubuntu 系统本身就具有这个功能的话,也有点太牵强了,哈),下面的这个软件就可以实现一定的动画桌面的功能,而且我试了一下,效果还是非常不错的,不过性能嘛,就是对计算机需求还是有点需求的,就像你在玩全屏的 flash 网页游戏一样,如果计算机不够强劲,那么…… LiveWallpaper就是一个可以让你实现动画桌面的软件。目前版本为 0.3 版,大家如果用 Android 的手机系统的话,很可能已经使用过一款在手机上的更换桌布的名字非常一样的 LiveWallpaper 软件了。不过我们这个是在 Ubuntu 桌面系统上使用的,目前来说,我还不知道计算机桌面系统上的 Li...
- 下一篇
《CCNP TSHOOT 300-135认证考试指南》——2.3节利用Cisco IOS验证和定义故障问题
本节书摘来自异步社区《CCNP TSHOOT 300-135认证考试指南》一书中的第2章,第2.3节利用Cisco IOS验证和定义故障问题,作者 【加】Raymond Lacoste , 【美】Kevin Wallace,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.3 利用Cisco IOS验证和定义故障问题CCNP TSHOOT 300-135认证考试指南接到故障工单后的首要任务就是验证并定义故障问题,利用一些相对简单的任务即可确认所报告的故障问题,并且在大多数情况下有助于聚焦故障排查工作。Cisco IOS内置了三款易于使用的工具(ping、Telnet和traceroute),可以帮助验证网络连接性并明确定义故障问题。本节将讨论利用ping、Telnet和traceroute等工具验证故障问题并聚焦故障排查工作的方式。 关键 检测网络连接性的最常用命令就是ping。第1章曾经说过,ping测试成功表示OSI的第一层、第二层、第三层工作均正常,因而可以将排障重心集中到更高的OSI层,反之,如果ping测试不成功,那么就可以将排障重心集中到较低的OSI层。 基本的pin...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Hadoop3单机部署,实现最简伪集群
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8编译安装MySQL8.0.19
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)