模块概览

引言


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. (6) 深入理解Java Class文件格式(五)

    前情回顾 本专栏的前几篇博文, 对class文件中的常量池进行了详细的解释. 前文讲解了常量池中的7种数据项, 它们分别是: CONSTANT_Utf8_info CONSTANT_NameAndTy ...

  2. Linux的加密认证功能以及openssl详解

    一.详细介绍加密.解密技术 现在的加密/解密技术主要有三种:对称加密,非对称加密,和单向加密 这三种加密解密技术的组合就是现在电子商务的基础,它们三个有各自最适合的领域,而且所要完成的功能也是不同的, ...

  3. SNMP OID列表 监控需要用到的OID

    zabbix的snmp监控还没开始讲,不过先给大家列一些snmp常用的一些OID,比如cpu.内存.硬盘什么的.先了解这些,在使用snmp监控服务器. 系统参数(1.3.6.1.2.1.1) OID ...

  4. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序处理并发

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第十篇:为ASP.NET MVC应用程序 ...

  5. JavaScript格式化时间

    最近最练习遇到一个问题,就是从数据库中获取时间,利用EasyUI界面来显示时间类型的生日,发现它是按照毫秒来计算的long型数据,在界面显示并不能到达到一目了然,这里可以用两种方法来解决这个问题 在d ...

  6. Logistic回归模型和Python实现

    回归分析是研究变量之间定量关系的一种统计学方法,具有广泛的应用. Logistic回归模型 线性回归 先从线性回归模型开始,线性回归是最基本的回归模型,它使用线性函数描述两个变量之间的关系,将连续或离 ...

  7. 基础笔记3(一)(String StringBuilder StringBuffer 数组)

    ---恢复内容开始--- 1数组.有序的同类型的集合. 2.string :字符串类型:其实就是一个字符数组.添加了private final,所以string是一个不可以变的字符串. String. ...

  8. Deep Learning 4_深度学习UFLDL教程:PCA in 2D_Exercise(斯坦福大学深度学习教程)

    前言 本节练习的主要内容:PCA,PCA Whitening以及ZCA Whitening在2D数据上的使用,2D的数据集是45个数据点,每个数据点是2维的.要注意区别比较二维数据与二维图像的不同,特 ...

  9. vim 替换操作

    全局替换真正使用的是两个ex命令 g(global) 和 :s(switch) 1.替换命令语法 :s/old/new/ 这将把当前模式中的第一个old替换为new 2.替换命令语法 :s/old/n ...

  10. SpringMVC -- 梗概--贰

    1.为什么要配置: mvc:annotation-driven 1>在springMVC的处理流程中,有两个重要组件:HandlerMapping和HandlerAdapter 分别负责解析Ha ...