生命周期

Libgdx应用有一个定义好的生命周期,控制着整个应用的状态,例如creation, pausing, resuming, disposing

ApplicationListener

开发者可以通过实现ApplicationListener接口,并传入一个实现了Application的实例来获得生命周期事件的回调函数。自此之后,每当发生一次应用层的事件,Application都会调用ApplicationListener。ApplicationListener的主干实现是这样:

public class MyGame implements ApplicationListener {
public void create () {
} public void render () {
} public void resize (int width, int height) {
} public void pause () {
} public void resume () {
} public void dispose () {
}
}

如果不是所有的接口方法都是相关的,开发者可以从ApplicationAdapter派生一个类。一旦传入了Application,ApplicationListener的方法会在下面时刻被调用:

Method signature Description
create () 应用创建时调用。
resize(int width, int height) 屏幕被re-size,且游戏不处于暂停状态时调用。在create()执行后,该方法也会被调用。参数是新的屏幕宽度与高度的像素数。
render () 应用在游戏循环中每次重绘时调用。游戏逻辑通常在这个方法中更新。
pause () 在Android上,按到Home键时或有来电时会调用。在Desktop应用中,会在 dispose() 执行,应用退出前执行。这是保存游戏状态的好地方。
resume () 从暂停状态恢复时调用,仅在Android上调用。
dispose () 应用销毁时调用,会紧接着一个pause()方法执行。

主循环

Libgdx本质上是由于Android和JavaScript的作用产生时间驱动的,并不存在显式的主循环。可以将 ApplicationListener.render() 看作是主循环体。

Libgdx 开发指南(1.1) 应用框架——生命周期的更多相关文章

  1. Libgdx 开发指南(1.2) 应用框架——模块概览

    模块概览 引言 LibGDX由一些为一个典型游戏架构中的各个步骤提供服务的模块组成. Input:为所有平台提供一致的输入模型与处理器.支持键盘.触屏.加速度传感器与鼠标. Graphics:使用硬件 ...

  2. Libgdx 开发指南(1.3) 应用框架——查询、日志

    查询 Application接口提过多种方法查询运行时环境属性. 获得应用类型 有时候根据运行平台需要处理一些具体的逻辑,可以使用 Application.getType() 方法来返回应用所运行的平 ...

  3. atitit.提升开发效率---使用server控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比較

    atitit.提升开发效率---使用server控件生命周期  asp.net 11个阶段  java jsf 的6个阶段比較 例如以下列举了server控件生命周期所要经历的11个阶段. (1)初始 ...

  4. Cordova - 使用Cordova开发iOS应用实战2(生命周期、使用Safari调试)

    Cordova - 使用Cordova开发iOS应用实战2(生命周期.使用Safari调试) 前文我们创建了一个简单的Cordova项目,结构如下: 1,Cordova生命周期事件 (1)device ...

  5. Libgdx 开发指南——目录

    本系列文档选译自libgdx github项目 wiki : https://github.com/libgdx/libgdx/wiki 由于关于Libgdx的中文文档非常稀缺,因此在这里对官方Wik ...

  6. 【开源java游戏框架libgdx专题】-04-接口介绍及生命周期

    在核心项目中包含6大与操作系统交互的接口,每个后端都实现了这6大接口. Application:运行应用程序并通知API的客户端应用程序级别的事件,提供日志记录设施和查询方法,例如,内存使用. Fil ...

  7. python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)

    昨日内容回顾 0. 组件注意事项!!! data属性必须是一个函数! 1. 注册全局组件 Vue.component('组件名',{ template: `` }) var app = new Vue ...

  8. Android开发艺术1之Activity的生命周期

    作为<Android开发艺术探索>这本书的第一篇博客,我就多说几句.本系列博客旨在对书中相关内容进行解读,简化,提供一个入门到提高的流程.不敢说书评,也不能说教程,只希望对有些人有帮助就好 ...

  9. OS开发之旅之App的生命周期【转载】

    原文链接 http://www.360doc.com/content/15/0918/14/27799428_499912639.shtml 在iOS App中,入口函数并不在根目录下,而是在“Sup ...

随机推荐

  1. noi 8787 数的划分

    题目链接:http://noi.openjudge.cn/ch0206/8787/ 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序). 简直跟分苹果一模一样. #include < ...

  2. C++去掉字符串首尾的 空格 换行 回车

    /* *去掉字符串首尾的 \x20 \r \n 字符 */ void TrimSpace(char* str) { ; char *end = str; char *p = str; while(*p ...

  3. 【leetcode❤python】 414. Third Maximum Number

    #-*- coding: UTF-8 -*- #l1 = ['1','3','2','3','2','1','1']#l2 = sorted(sorted(set(l1),key=l1.index,r ...

  4. ShareSDK第三方登录代码

    - (IBAction)YYSJBut:(UIButton *)sender{    if (sender.tag == 7)    {        [self AuthLogin:SSDKPlat ...

  5. cpp blog上面看到一哥们写的 下拉列表

    #ifndef DROPDOWNLIST_H_INCLUDED#define DROPDOWNLIST_H_INCLUDED namespace azl{ #define DROPDOWNLIST_N ...

  6. Linux高级权限管理 - ACL

    传统权限模型缺点: 传统的UGO权限模型无法应对负责的权限设置要求,如对于一个文件只能设置一个组,并且对该组进行权限控制,但是如果该文件有多个组合会对其进行访问,并且都要要求权限限制时,传统的UGO模 ...

  7. 背景:表A数据误操作,被delete了,恢复。

    SELECT MAX(Scn) FROM Sys.Smon_Scn_Time WHERE Time_Dp < TO_DATE('2015-09-18', 'YYYY/MM/DD') select ...

  8. Delphi 文件类型

    该内容整理自以下链接 http://www.cnblogs.com/chenyunpeng/archive/2012/08/02/2620513.html 1.DPR: Delphi Project文 ...

  9. [SoapUI] SoapUI JDBC REST 连接 Netezza

    How to Connect to Server 1. Apply accounts that has permission to access Netezza system for host acc ...

  10. mac下使用brew安装ffmpeg支持x265

    使用brew install ffmpeg 安装ffmpeg默认是没有支持x265的, 使用brew info ffmpeg 获取安装选项帮助, 使用brew reinstall ffmpeg --w ...