模块概览

引言


LibGDX由一些为一个典型游戏架构中的各个步骤提供服务的模块组成。

  • Input:为所有平台提供一致的输入模型与处理器。支持键盘、触屏、加速度传感器与鼠标。
  • Graphics:使用硬件提供的OpenGL ES实现在屏幕上绘图。
  • Files:在所有平台上的抽象文件访问。提供方便的读写操作而无需关心媒介。
  • Audio:在所有平台上支持录音与声音的播放。
  • Net:提供网络操作的方法,例如简单的HTTP Get与Post请求,以及TCP searver/client的socket通信。

如下流程图显示了一个简单游戏架构中的各个模块。

接下来的部分简要描述各模块提供的最常用的用例。

模块


Input

输入模块在每个平台上轮询不同的输入状态。它可以轮询按键、触屏和加速度传感器的状态。在Desktop上,触屏事件由鼠标事件代替,而加速度传感器是不可用的。

提供注册输入处理器以使用事件驱动的输入模型的方法。

如果在处理过程中有触摸(点击)事件发生,下面的代码片段获得当前的触摸点坐标:

if (Gdx.input.isTouched()) {
System.out.println("Input occurred at x=" + x + ", y=" + y);
}

类似的方式可以用来轮询并处理其他支持的输入方式。

Graphics

图形模块抽象了和GPU的通信,方便获得OpenGL ES包装器的实例。根据不同的硬件,包装器可能是可用的也可能是不可用的。

提供生成像素和纹理的方法。

例如为了获得OpenGL API 1.0的实例,可以使用如下代码:

GL10 gl = Gdx.graphics.getGL10 ();

该方法返回一个实例用来再屏幕上绘图,当硬件不支持OpenGL ES v1.0时,则返回null。

如下代码清空屏幕并填充屏幕为红色:

gl.glClearColor(0.1f, 0.0f, 0.0f, 1);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

它总是返回具体的API实现(lwjgl,jogl或android),所以主应用不需要知道细节,只要平台支持就能工作。

支持的API版本:

GL Version Method to access
1.0 Gdx.graphics.getGL10();
1.1 Gdx.graphics.getGL11();
2.0 Gdx.graphics.getGL20();

Files

文件模块提供平台无关的文件访问以简化文件读写。由于平台安全限制,写文件会有些许受限。

最常见的用例是从所有平台同一个子目录中加载游戏资源(图形结构,声音文件)。也可以用来将高分记录或游戏状态写入到文件。下面的例子从目录$APP_DIR/assets/textures中读取一个结构文件:

Texture myTexture = new Texture(Gdx.files.internal(“assets/texture/brick.png”));

这是一个很强大的抽象层,可以在Android和Desktop上工作。

Audio

音频模块简化了重建与回放音频文件的过程,也提供直接访问音频硬件的接口。

可以处理两类音频文件:音乐和声音。两种类型都支持WAV,MP3和OGG格式。

声音实例可以加载到内存随时播放。适用于多次使用的游戏音效,例如爆炸声、枪声。

音乐实例是从文件读取的流,每次播放的时候都从文件读取音频流发送到音频设备中。

下面的代码片段反复播放myMusicFile.mp3文件,音量调为50%:

Music music = Gdx.audio.newMusic(Gdx.files.getFileHandle("data/myMusicFile.mp3", FileType.Internal));
music.setVolume(0.5f);
music.play();
music.setLooping(true);

Net

TBD

Libgdx 开发指南(1.2) 应用框架——模块概览的更多相关文章

  1. Libgdx 开发指南(1.1) 应用框架——生命周期

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

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

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

  3. Libgdx 开发指南(1) 应用框架

    应用框架 模块 Libgdx包含五个核心接口与操作系统交互,各自实现了如下接口: Application:运行应用,向client通知应用层事件,例如窗口大小的改变(window resizing). ...

  4. Libgdx 开发指南——目录

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

  5. 第六模块:WEB框架开发 第1章·Django框架开发1~50

    01-Django基础介绍 02-Web应用程序1 03-Web应用程序2 04-http请求协议1 05-http请求协议2 06-http协议之响应协议 07-wsgire模块1 08-wsgir ...

  6. 开发指南专题二:JEECG微云高速开发平台JEECG框架初探

    开发指南专题二:JEECG微云高速开发平台JEECG框架初探 2.JEECG框架初探 2.1演示系统 打开浏览器输入JEECG演示环境界址:http://demo.jeecg.org:8090/能够看 ...

  7. 基于Asterisk的VoIP开发指南——Asterisk 模块编写指南(1)

    原文:基于Asterisk的VoIP开发指南--Asterisk 模块编写指南(1) 1 开源项目概述 Asterisk是一个开源的软件包,通常运行在Linux操作系统平台上.Asterisk可以用三 ...

  8. Jdon框架开发指南

    Jdon框架快速开发指南 开发主要步骤如下: JdonFramework6.0以上两步开发见这里. 快速配置指南 新增/查询/修改/删除(CRUD); 批量查询和分页显示 本文Step By Step ...

  9. 移动IM开发指南3:如何优化登录模块

    <移动IM开发指南>系列文章将会介绍一个IM APP的方方面面,包括技术选型.登陆优化等.此外,本文作者会结合他在网易云信多年iOS IM SDK开发的经验,深度分析实际开发中的各种常见问 ...

随机推荐

  1. android手电筒(摇一摇也可开启手电筒)

    package com.firefly.myflashlight; import android.app.Activity; import android.hardware.Camera; impor ...

  2. zigbee学习之路(三):按键的控制

    一.前言 通过前一次的实验,相信大家都已经对cc2530程序的编写有了一定的认识,这次我们来操作和实验的是cc2530上的按键模块. 二.原理分析 我们先来看一下按键的原理图: 根据原理图我们可以得出 ...

  3. WebRequest使用

    // 待请求的地址 string url = "http://www.cnblogs.com"; // 创建 WebRequest 对象,WebRequest 是抽象类,定义了请求 ...

  4. 皇后(queen)

    皇后(queen)[题目描述] 众所不知,rly现在不会玩国际象棋.但是,作为一个OIer,rly当然做过八皇后问题.这里再啰嗦几句,皇后可以攻击到同行同列同对角线,在n*n的方格中摆n个皇后使其互不 ...

  5. 编写一个JSP程序实现用户登录

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  6. Linux 休眠,挂起(待机),关机等几个命令的区别及如何实现;如何启用Ubuntu的休眠模式

    这里对linux 的几个命令整理下,有:休眠,挂起,待机,关机等几个命令的区别及如何实现. 休眠是一种更加省电的模式,它将内存中的数据保存于硬盘中,所有设备都停止工作.当再次使用时需按开关机键,机器将 ...

  7. spinner下拉框组件

    方法一代码如下: <string-array name="city_name"> <item>浙江</item> <item>上海& ...

  8. jQuery实现两个按钮的位置互换

    页面上有2个按钮A和B.点击按钮A和按钮B互换位置 ,点击按钮B和按钮A互换位置.应该如何实现? html代码如下: <body> <!--页面上有2个按钮A和B. 点击按钮A和按钮 ...

  9. 纠错工具之 - Proovread

    BioInf-Wuerzburg/proovread - Github 主要是来解读 proovread 发表的文章,搞清楚它内在的原理. Proovread,这个工具绝对没有你想的那么简单,它引入了 ...

  10. [分享] WIN7x64封装体积小于4G制作过程

    raymond 发表于 2015-11-1 18:27:17 https://www.itsk.com/thread-359041-1-1.html 前人栽树,后人乘凉!感谢各位大神的作品!我只是按部 ...