英文原文地址:
https://code.google.com/p/libgdx/wiki/Application
引用本文请注明来源:
http://yhz61010.iteye.com/blog/1939613
什么是 Back-ends
Libgdx 将不同平台的差异进行了抽象,将它们抽象成一个接口集。对于每一个 libgdx 支持的平台,我们统一将它叫做 back-end,因为它们都实现了这些接口的。作为一个开发者,我们并不关心 back-ends,但我们需要关心的这些接口。
Libgdx 目前支持 4 种 back-ends:
1. Lwjgl(Lightweight Java Game Library):基于轻量级 Java 游戏库,使用 JNI 实现的平台相关的窗口工具包, OpenGL 和 OpenAL 及其它一些功能。该 back-end 运行于 Windows, Linux 和 Mac OS X, 并提供了 Java run-time,及支持 OpenGL 1.5+ 的显卡。
2. Jogl(Java Bindings for OpenGL):基于 Jogl 1.1 另一个使用 JNI 实现的 OpenGL 和 SWing,及 LWJGL 实现的 OpenAL。它依然用于 Windows, Linux 和 Mac OS X 平台。Lwjgl back-end 是现在的首选,因为它更加稳定,特别是对于那些全屏的应用。
3. Android:基于 Android API。
4. HTML5:基于 GWT,SoundManager 2 以及基于 Quake 2 GWT port 的更新后的 GWT WebGL 和 Local Storage。该 back-end 会将 Java 代码编译成纯 JavaScript 代码,可以运行于 Chrome, Safari, Firefox 和最新版 Opera 以及任何支持 WebGL 的浏览器。由于原生的 GWT 和 JavaScript 的问题,使用该 back-end 时会有一些限制,详细信息可以查看如下地址:
https://github.com/libgdx/libgdx/tree/master/backends/gdx-backends-gwt/issues.txt
模块
模块是 libgdx 的核心,它由五个接口组成,用于和操作系统的交互。每一个 back-end 都实现了这些接口。
- Application:负责运行应用并通知 API 客户端应用级别的事件。例如,调整窗口大小等。提供 Log 功能及一些查询方法。例如,查询内存使用情况等。
- Files:暴露平台底层的系统文件。在自定义的 Filehandle 系统之上(并不是使用 Java 的 File 类进行内部操作),提供了一个对文件位置的不同类型的抽象。
- Input:通过 API 客户端关于用户的输入,例如,鼠标,键盘,触摸事件,或加速计事件。支持轮询和事件驱动两种处理方式。
- Audio:提供了关于音效和流音乐的回话以及直接访问音频设备(PCM 音频的输入/输出)的能力。
- Graphics:可以使用 OpenGL ES 1.x 和 2.0(如果可用的话),还允许查询或设置视频模式等。
起始类(Starter Classes)
唯一需要写的关于平台相关的代码,我们管它叫做“起始类(Starter Classes)”。对于每一个平台,我们需要使用一小段代码来实现 back-end 提供的 Application 的一个接口。以桌面程序为例,需要写的 Lwjgl back-end 的代码如下:
public class DesktopStarter {
public static void main(String[] argv) {
LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
new LwjglApplication(new MyGame(), config);
}
}
对于 Android 系统,对应的起始类(Starter Class)可能会像下面这样:
public class AndroidStarter extends AndroidApplication {
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
initialize(new MyGame(), config);
}
}
上述两个类,通过被放在各自的项目的。如,桌面程序项目使用第一个起始类,Android 项目使用第二个起始类。关于如何新建项目及它们在 Eclipse 中的配置,请参见如下地址:
https://code.google.com/p/libgdx/wiki/ProjectSetupNew
那么,一个游戏真正的代码通过被放在一个实现了 ApplicationListener 的类中。然后将该类的实例分别传给不同的 back-end 的 Application 接口实现的初始化方法(例如上面两段代码例)。在恰当的时候,应用程序会调用 ApplicationListener 中的相应方法(详细内容,请参见“生命周期”
https://code.google.com/p/libgdx/wiki/ApplicationLifeCycle)。
访问模块
可以通过 Gdx 类的静态字段来访问先前提到的模块。这些基础的静态字段是一组全局变量,允许我们很容易的访问任何 ligbdx 模块。但是,在通常情况下,对于编程来说,使用全局变量通常是一种不好的作法,但是 libgdx 依然选择使用这种机制来减轻在引用上的传值所带来的痛苦。我们在使用 libgdx 中会经常看到这种用法。
可以像下面这样,很容易的就可以访问音频模块:
// creates a new AudioDevice to which 16-bit PCM samples can be written
AudioDevice audioDevice = Gdx.audio.newAudioDevice(44100, false);
Gdx.audio 是一个后端的接口实现的一个引用,在应用启动时该接口实现被初始化的。用同样的方式可以访问其它的模块。例如,使用 Gdx.app 可以得到一个 Application,使用 Gdx.files 可以访问文件接口等。
附录
Libgdx 生命周期图
分享到:
相关推荐
《深入解析libgdx-nightly-20140711:构建跨平台游戏开发框架》 libgdx-nightly-20140711是一个针对游戏开发的库,它代表了libgdx在2014年7月11日的最新夜间版本。libgdx是一款强大的开源Java框架,专为开发跨平台...
相信一定有人试图思考并尝试自己制作一些初级的游戏引擎,但绘制效率、框架等等都很难解决和完善,那么这篇文章可能会帮到你。如果你还想了解更多细节原理以及整体思想,下面还有几篇文章或许能够给你一些启发。 ...
在"libgdx---MySuperJumper"项目中,我们看到了一个基于LibGDX构建的简单但有趣的2D游戏——MySuperJumper。这个游戏可能是类似“超级马里奥”那样的跳跃类游戏,玩家控制的角色需要通过跳跃避开障碍物,收集物品,...
总的来说,"libgdx-nightly-20110809.zip"是一个反映LibGDX早期开发状态的快照,它展示了该框架在游戏开发中的核心组件和结构。虽然现在有更现代的版本可用,但对于了解LibGDX的历史和发展,以及如何在早期版本中...
android游戏开发框架libgdx的使用(二)--图形绘制[汇编].pdf
下载后将libs中的gdx.jar,gdx-backend-android.jar,spine-libgdx.jar包放入androidstudio或elipse的libs下,将armeabi中的so放入jini目录下.支持使用libgdx使用spinne。
LibGDX是一款强大的开源游戏开发框架,它支持多平台,包括Android、iOS、桌面系统等。本篇将深入探讨LibGDX如何处理中文显示与汉字绘制,这对于开发面向中国市场的游戏尤其重要。 首先,我们要了解BitmapFont类,它...
通过学习这个项目,开发者不仅可以深入了解LibGDX的使用,还能掌握游戏设计的基本原理和技巧,包括用户输入处理、游戏逻辑编程、图形渲染以及资源管理等。对于希望提升自己游戏开发能力的程序员来说,这是一个非常有...
《libgdx-cookbook-cookbook source code》是一个与libgdx框架相关的代码库,主要包含《libgdx-cookbook》一书中的示例代码。libgdx是一个广泛使用的开源Java游戏开发框架,它提供了跨平台的支持,让你可以在Android...
android游戏开发框架libgdx的使用(一)--环境搭建.pdf
android游戏开发框架libgdx的使用(一)--环境搭建知识.pdf
android游戏开发框架libgdx的使用(二)--图形绘制借鉴.pdf
- **Gdx-Android**:Android 后端,使得游戏可以直接在 Android 设备上运行。 - **Gdx-Box2D**:基于 Box2D 的物理引擎,用于模拟真实世界的物理效果。 - **Gdx-Freetype**:字体渲染工具,可以动态生成并渲染...
`gdx-backend-android`则用于Android平台,而`gdx-backend-gwt`则允许游戏在WebGL支持的浏览器中运行。 2. **Natives Libraries**:如`gdx-natives.jar`和`gdx-backend-XXX-natives.jar`,这些文件包含了特定平台的...
Android 游戏开发框架 LibGDX 的使用 —— 在 LibGDX 中使用 Box2D LibGDX 是一个流行的 Android 游戏开发框架,它提供了许多实用的功能和工具帮助开发者快速创建游戏。然而,在游戏开发中难免会需要模拟现实情况,...
通过学习和使用"安卓Android源码——libgdx-0.9.6.zip"中的内容,开发者可以深入了解LibGDX的工作原理,提升游戏开发效率,同时也可以根据自身需求进行定制和扩展,实现更多创新功能。无论是初学者还是经验丰富的...
下载解压后的`libgdx-for-android-master`文件,你会看到典型的LibGDX项目结构,包括以下几个模块: 1. core:核心模块,包含了游戏逻辑和数据结构,不依赖于任何平台。 2. android:Android特定模块,处理Android...
2048 是一款非常热门的数字益智类游戏,操作规则很简单,在屏幕中有四行四列共 16 个卡片,初始时随机在其中两个卡片生成两个数字 2 或 4,然后手指可在卡片组区域 上下左右滑动 将所有卡片移动到 上侧 / 下侧 / ...