libgdx 学习笔记七 libgdx应用程序生命周期
简介
本章内容描述libGDX 应用程序的结构和怎么根据不同的平台版本使用不同的后台
The Application
做为任意libGDX 工程的主入口点。Application 决定平台的版本和后台图形。Application 接口提供了合适的方法来访问Graphics, Audio, Input and File I/O模块。也提供了跨平台的Logging 模块。
LibGDX 当前支持2个后端一个是desktop applications 另一个是Android applications 。创建libGDX 应用程序,首先必须实现ApplicationListener 接口
The Application Listener
为了初始化application必须实现这个接口, 它用来更新游戏状态(即逻辑),渲染出项,暂停游戏,保存状态,释放资源等。
它也有一个处理application 声明周期事件的地方。每个应用,不管后台平台版本都必须实现ApplicationListener 接口。所有平台都会存在并要实现这个接口。
应用程序中,游戏循环和ApplicationListener式游戏逻辑实现的地方。
一个简单的实现如下:
public class MyGame implements ApplicationListener {
public void create () {
// STUB
}
public void render () {
// STUB
}
public void resize (int width, int height) {
// STUB
}
public void pause () {
// STUB
}
public void resume () {
// STUB
}
public void dispose () {
// STUB
}
这些方法 由在应用声明周期中的事件触发,描述如下:
方法名 |
描述 |
create () |
当应用程序创建时,此方法被调用一次 |
resize(int width, int height) |
每次游戏屏幕重置尺寸并且不是暂停状态得时候调用此方法。在create()后调用一次 参数是屏幕被重置后的新宽度和高度 |
render () |
每次渲染发生时游戏循环调用此方法。游戏更新发生在绘制之前。意思就是说先处理逻辑,在处理绘制。 |
pause () |
在应用destroyed前调用此方法。在android中档Home键按下或者由重新进入程序时调用此方法。在桌面应用中,退出应用时在dispose() 之间调用 这是一个保存游戏状态的好地方,在android中resume ()不一定会被调用。 |
resume () |
这个方法仅在android中调用, 当应用获得焦点时. 桌面应用中将不会调用此方法。 |
dispose () |
当应用destroyed时,调用此方法,在pause()之后 |
应用程序生命周期
上面提到的方法在应用程序的整个生命周期之间会被触发
以下图表显示一个libGDX应用经过的不同阶段:
创建一个桌面应用程序
以下类从先前的MyGame listener使用lwjgl创建一个桌面应用:
public class MyDesktopGame {
public static void main(String[] args) {
new LwjglApplication(new MyGame(), "My Game", 480, 320, false);
}
}
以下是运行结果:
他创建了一个lwjgl后台应用,像素为480X320。最后一个参数表明OpenGL ES 2没有被使用。
以下类创建了一个桌面应用使用JOGL作为后台,使用了MyGame
import com.badlogic.gdx.backends.jogl.JoglApplication;
public class MyDesktopGame {
public static void main(String[] args) {
new JoglApplication(new MyGame(), "My Game", 480, 320, false);
}
}
第一个例子中需要包含以下库文件。
-
gdx.jar
-
gdx-natives.jar
-
gdx-backend-lwjgl.jar
-
gdx-backend-lwjgl-natives.jar
第二个例子中需要包含以下库文件。
-
gdx.jar
-
gdx-natives.jar
-
gdx-backend-jogl.jar
-
gdx-backend-jogl-natives.jar
桌面应用程序构造函数中包含5个参数
ApplicationListener listener |
为应用程序创建的ApplicationListener实例 |
String title |
在应用程序的 title bar上显示的title |
int width |
屏幕高度 |
int height |
屏幕高度 |
boolean useGL2 |
是否使用GL2,true使用2,false使用1.x |
创建Android应用程序
创建android应用程序涉及到的更多,但仍然很简单。
请参考My First Triangle 教程 设置android工程。
你需要以下目录和文件
-
armeabi/
-
armeabi-v7a/
-
gdx-backend-android.jar
-
gdx.jar
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构