本文为 Modules overview 的译文
介绍
LibGDX 由多个模块构成,它为架构的游戏的每一步提供服务。
Input :为所有的平台提供统一的输入模型和处理程序,支持键盘,触摸屏,加速度计和鼠标。
Graphics:使用OpenGL ES提供硬件支持,可以将图像绘制到屏幕上。
Files:提供方便的读/写方法,在所有的平台上进行文件访问。
Audio:便于在所有平台上进行录音和播放.
Networking: 提供执行网络操作的方法,例如简单的HTTP获取和发布请求以及TCP服务器/客户端套接字通信。
以下部分简要介绍了为每个模块提供最常见的用例
模块
Input
输入模块可以在每个平台上轮询不同的输入状态。 它允许轮询每个键,触摸屏和加速度计的状态。 在桌面上,当加速度计不可用时,触摸屏被鼠标所取代。
它还提供了注册输入处理器以实现基于事件的输入模型的方法.
以下的代码展示了 触摸(或者桌面应用鼠标正在移动),那么它或获取到当前的坐标
if (Gdx.input.isTouched()) {
System.out.println("Input occurred at x=" +
Gdx.input.getX() + ", y=" + Gdx.input.getY());
}
类似的,所有支持的输入设备都可以被轮询和处理。
Graphics
Graphics 模块抽象了与GPU通信并提供了获取OpenGL ES工具类简便的方法,它着重于OpenGL ES的底层抽象代码,针对不同的平台,有不同的实现策略。
依据不同的底层硬件,Graphics 的工具类 有可能不可用。
Graphics模块还提供了生成Pixmap和Texture的方法。
比如,获取OpenGL 2.0的API实例,可以使用以下代码:
gl.glClearColor(1f, 0.0f, 0.0f, 1);
gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
以上代码总是返回针对不同平台的具体实现(lwjgl, jogl or android),而主应用无需关心具体内容,如果支持,它将在平台范围内正常工作.
目前支持的Graphics API版本
GL Version | 获取方法 |
---|---|
2.0 | Gdx.graphics.getGL20(); |
3.0 | Gdx.graphics.getGL30(); |
如果想了解更多关于Graphics的知识,请点击这里
Files
跨平台的文件模块访问文件的通用方式,它是文件读写变得更容易,由于平台安全性限制,文件写入存在一定的限制.
文件模块最常用的场景是将游戏资源(纹理、声音文件)从同一个应用程序的子目录加载到所有平台,当然也适用于保存游戏状态或者写入游戏分数的场景。
以下示例从$APP_DIR/assets/textures 目录创建一个纹理:
Texture myTexture = new Texture(Gdx.files.internal("assets/texture/brick.png"));
这是一个非常强大的抽象层,因为在各个平台上它都可以运行。
Audio
音频模块使音频文件的创建和播放非常简单。 它还可以直接访问声音硬件。
音频模块支持两种类型的音频文件,Music & Sound,不管是哪种类型,都支持WAV, MP3 , OGG 格式的文件.
声音文件被加载到内存中,随时可以被播放,例如爆炸声或者枪声。音乐实例是来自磁盘或者SD卡上的文件的流,每次播放声音文件时,都会将文件传输到音频设备上。
以下代码片段从磁盘重复播放声音文件myMusicFile.mp3:
Music music = Gdx.audio.newMusic(Gdx.files.getFileHandle("data/myMusicFile.mp3",
FileType.Internal));
music.setVolume(0.5f);
music.play();
music.setLooping(true);
Networking
网络模块提供对游戏网络有用的功能,可用于添加多人游戏,将玩家发送到您的网站或执行其他网络任务。 这些功能可在多个平台中使用,但某些平台可能需要额外的注意事项或缺少某些功能。
网络模块包括可配置的TCP客户端和服务器套接字,其设置针对低延迟进行优化。
还有用于进行HTTP请求的方法和实用程序。 一个这样的实用程序是Request Builder,它使用方法链来轻松创建HTTP请求。
Request Builder可用于使用以下代码片段创建HTTP请求:
HttpRequestBuilder requestBuilder = new HttpRequestBuilder();
HttpRequest httpRequest = requestBuilder.newRequest()
.method(HttpMethods.GET)
.url("http://www.google.de")
.build();
Gdx.net.sendHttpRequest(httpRequest, httpResponseListener);
它也可以用于使用以下代码段创建带有参数的HTTP请求:
HttpRequestBuilder requestBuilder = new HttpRequestBuilder();
HttpRequest httpRequest = requestBuilder.newRequest()
.method(HttpMethods.GET)
.url("http://www.google.de")
.content("q=libgdx&example=example")
.build();
Gdx.net.sendHttpRequest(httpRequest, httpResponseListener);