《libGDX移动游戏开发从入门到精通》一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中不断地产生日志。

时间: 2024-11-02 11:32:29

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

《libGDX移动游戏开发从入门到精通》一第1章 libGDX简介

第1章 libGDX简介 libGDX移动游戏开发从入门到精通 目前,手游在整个游戏的市场份额上所占的比例越来越大.腾讯系的手游更是一度占领了苹果App Store前十名超半数的席位.现在就让我们走进libGDX这个游戏引擎的世界,开发出一款属于自己的游戏.

《libGDX移动游戏开发从入门到精通》一导读

前 言 libGDX移动游戏开发从入门到精通 写作初衷 从创新工场-涂鸦移动离职以后,我一直想把自己所学到的东西总结一下,以帮助更多想走上或者准备走上游戏开发这条道路上的人.很庆幸地接到了出版社的约稿,便愉快地决定要把自己一路走来所学到的知识做一个系统的总结,并尝试用一种更容易理解的方式把它们讲出来,以让更多的读者少走一些弯路,可以在尽可能短的时间内学到尽可能多的知识. 当我刚开始学libGDX游戏引擎的时候,对于很多自学的人来说,我应该是很幸运的了.因为当时身边有很多经验很丰富的同事可以请教.

《libGDX移动游戏开发从入门到精通》一第2章 libGDX的架构分析

第2章 libGDX的架构分析 libGDX移动游戏开发从入门到精通通过对第1章的学习,我们掌握了libGDX的基本使用方法.但是作为游戏引擎,我们有必要对其模块组成.生命周期及其提供的一些方便的工具有一定的了解.这些就是这一章所需要学习的内容.

《libGDX移动游戏开发从入门到精通》一1.5 其他的一些准备工作

1.5 其他的一些准备工作 通过学习前面的知识,我们已经学会写一个libGDX的HelloWorld程序,并且学会了在Android平台和桌面上调试自己的libGDX程序.但是在很多情况下,我们还需要看Android的源码.libGDX的源码.直接打开可运行的jar包.这一节就来讲解这些知识. 1.5.1 关联Android源码 Android系统也是由许许多多的代码组成的,这些代码也很有可能会有错误.在遇到一个问题的时候,除了我们自身的原因,还有可能是别人给我们提供的代码本身就是错误的.所以,

《libGDX移动游戏开发从入门到精通》一1.2 搭建libGDX开发环境

1.2 搭建libGDX开发环境 在本节中,我们将介绍搭建libGDX的开发环境.本节是大家使用libGDX进行游戏开发的基本准备工作.需要注意的是,在此之前应该把JDK下载.安装并配置好.同样的,eclipse下的开发环境也需要配置好. 1.2.1 libGDX下载 (1)登录官网:http://libgdx.badlogicgames.com/,单击红色框选中的"Download",如图1.6所示. (2)单击"Download"选项后你会看到以下界面,单击其中

《libGDX移动游戏开发从入门到精通》一1.3 开始第一个libGDX游戏

1.3 开始第一个libGDX游戏 经过1.3节以前的内容,我们已经搭建好了使用libGDX进行游戏开发的基本环境.那么这一节,就带大家用libGDX来写自己的第一个HelloWorld程序. 1.3.1 第一个HelloWorld程序的编写 在这个HelloWorld程序中,将带大家使用libGDX把一张图片显示出来.通过这个HelloWorld的程序,让读者们对使用libGDX来进行游戏开发的程序结构有大致的了解. 具体步骤如下(考虑到有的读者可能之前没有开发经验,所以在这里把新建类的方法详

《libGDX移动游戏开发从入门到精通》一1.1 libGDX介绍

1.1 libGDX介绍 在本节中,主要简单介绍一下libGDX这个游戏引擎,包括其特点.配套的开发工具等,让读者对libGDX这个游戏引擎有一个的感性的认识. 1.1.1 libGDX的特点 libGDX是一个跨平台的2D/3D游戏开发框架,它由Java/C/C++语言编写而成.它基于Apache LicenseVersion 2.0协议,对商业使用和非商业使用均免费,代码托管于Github中,最新版本为1.5.4.开源的游戏框架并不少见,但是libGDX的优势是相当明显的,主要是体现在以下几

《libGDX移动游戏开发从入门到精通》一1.4 运行libGDX的官方Demo

1.4 运行libGDX的官方Demo 在1.3节中,我们已经能够编写自己的第一个libGDX的HelloWorld程序了.在学习libGDX这个游戏引擎的时候,libGDX官方还提供了一些例子,通过这些例子,我们能学习到别人是怎么架构和设计一个游戏的,以及别人对于细节的处理,这对于初学者来说,是很好的资源.这一节就来学习怎么利用好这些资源. 1.4.1 libGDX的官网 进入官网,常见的方式有两种. 1.直接在地址栏中输入:http://libgdx.badlogicgames.com/.

《libGDX移动游戏开发从入门到精通》一2.2 模块

2.2 模块 libGDX这个游戏引擎的有一个特点就是架构清晰.组成模块化.那么现在我们就来学习一下libGDX这个游戏都由哪些模块组成,这些模块分别对外提供什么功能. 2.2.1 libGDX模块组成的图示 libGDX由数个模块组成,它们分别为一个游戏的各个步骤提供了服务与支持.这些主要模块在一个游戏中的典型架构如图2.7所示. 由图2.7可以看出,libGDX主要由Input.Files.Graphics.Audio这几个模块组成,以及图2.7中没有显示出来的Net模块.它们分别对应了li