libGDX的生命周期

原文作者:libGDX
原文地址:https://github.com/libgdx/libgdx/wiki/The-life-cycle
译文作者:Jianan - qinxiandiqi@foxmail.com
版本信息:本文基于2018-07-01版本翻译
译文版权:CC BY-NC-ND 4.0,允许复制转载,但必须保留译文作者署名及译文链接,不得演绎和用于商业用途。


libGDX应用程序具有明确定义的生命周期,用于处理应用程序的不同的状态,例如应用程序的创建、暂停、恢复、渲染和(销毁)释放等等。


ApplicationListener


应用程序的开发者通过实现ApplicationListener接口来接管libGDX应用程序的生命周期事件。ApplicationListener的实例需要传递给底层平台的Application实例(参考libGDX的应用框架)。之后,每当有应用程序级别的生命周期事件发生时,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类,然后有选择的重写需要的生命周期方法。

一旦ApplicationListener被传递到Application,它的方法将会在以下情况被回调:

方法签名描述
create ()创建应用程序的时候会被回调,它只会被回调一次。
resize(int width, int height)只要游戏不在Pause停止生命周期状态下,每次游戏的屏幕窗口尺寸发生变化都会回调这个方法。另外,create()方法被回调之后,它也会被回调一次。
这个方法的参数是屏幕变化之后新的屏幕宽高,单位是像素。
render ()每次应用程序循环游戏的渲染过程都会执行这个方法。游戏的刷新逻辑通常也会放在这个方法里面执行。
pause ()在Android平台上,当按了Home键或者有电话拨入等情况时,这个方法都会被回调。如果是在桌面平台上,只有在退出应用程序时,它会在dispose()被回调之前执行一次。
如果要保存游戏的状态,这个方法是个很合适的地方。
resume ()这个方法只会在Android平台上被调用,它只会在应用程序从Pause停止状态恢复运行的时候被调用。
dispose ()当应用程序被销毁的时候会调用这个方法。在它被调用之前会先回调pause()方法。

下面的图可以直观的看出整个生命周期:

libGDX生命周期


主循环在哪里?


Libgdx属于事件驱动模型,因为这也是Android和Javascript的工作模式,它没有明确的主循环。如果非要扯的话,ApplicationListener.render()方法也可以考虑看作是主循环方法。


其它参考


LibGDX和Android的生命周期
如果你的目标平台是Android的话,这篇文章会跟你解释清楚为什么不要使用静态变量。


上一章|libGDX的应用框架
下一章|模块概览

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值