(原文:http://www.libgdx.cn/topic/34/4-2-libgdx%E5%90%84%E4%B8%AA%E6%A8%A1%E5%9D%97%E6%A6%82%E8%A7%88

介绍

libgdx集成了几个模块为构建典型的游戏架构每一步提供服务。

  • Input:提供了针对所有平台统一的模型和handler。支持键盘,触摸屏,传感器和鼠标。

  • Graphics:通过硬件提供的OpenGL ES接口实现对图像在屏幕的绘制。

  • Files:提供了简单的方法进行读写操作。支持所有平台。

  • Audio:声音的录制和回放。支持所有平台。

  • Networking:提供了进行网络操作的方法。比如,简单的HTTP get 和post 请求和TCP 服务器/客户端 socket 通信。

通常一个简单的游戏架构可以通过如下实例调用libgdx的模块:

接下来介绍各个模块最常用的功能。

模块

Input

Input模块检测每个平台上的不同的输入状态。它允许检测键盘,触摸屏和传感器的状态。在桌面环境下(windows或Linux等),触摸屏被鼠标替代,当然传感器也不能使用。

它同样提供了基于Input模型的注册进行输入处理的方法,以此可以进行事件驱动。

接下来的代码用户检测用户是否发生触摸事件(桌面平台是鼠标点击),如果是则获取当前坐标:

if (Gdx.input.isTouched()) {

System.out.println("Input occurred at x=" + Gdx.input.getX() + ", y=" + Gdx.input.getY());

}

Graphics

Graphics模块对于GPU的通信进行抽象,提供了简单的方法来获取OpenGL ES封装的实例。

这些功能可以在有些平台不能使用。

Graphics模块同样提供了生成Pixmaps 和 Textures 的方法。

比如,通过如下方法获取OpenGL API 2.0实例:

GL20 gl = Gdx.graphics.getGL20 ()http://Gdx.graphics.getGL20GL20 ();

这个方法返回一个实例,该实例可以绘制到屏幕上。如果设备不支持OpenGL ES 2.0,将返回null。

接下来的代码将进行清屏操作,并将屏幕绘制成红色:

gl.glClearColor(0.1f, 0.0f, 0.0f, 1);

gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

所有的这些操作通过接口实现,无须关心某个平台是不是支持这个功能。

支持的OpenGL API版本:

事实上,libgdx已经放弃了对OpenGL API 1.0的支持,这在官方英文wiki中没有说明。

现在只支持OpenGL API 2.0和OpenGL API 3.0。

Files

Files模块通过统一的API对文件进行访问,与平台无关。这使得读写文件更加简单。因为平台的安全原因,文件写操作会面临一定的限制。

Files模块最常用的功能就是载入游戏资源(图片和声音),写入游戏得分和游戏状态。

接下来展示如何通项目/assets/textures目录获取一个Texture:

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

Audio

Audio用于创建和回放声音,特别是简单的声音。同时可以通过API直接访问声音硬件设备。

包含两种声音文件,音乐和音效。支持WAV,MP3 和 OGG 三种格式。

音效可以被载入内存,在任何时候都可以回放。通常播放时长较短,被多次使用。比如爆炸声和枪声。

音乐是指放置在SD卡或其它存储设备上的文件。播放时长较长。示例代码如下:

Music music = Gdx.audio.newMusic(Gdx.files.getFileHandle("data/myMusicFile.mp3", fileType.Internal));

music.setVolume(0.5f);

music.play();

music.setLooping(true);

www.libgdx.cn版权所有,如需转载,注明出处)

最新文章

  1. 海外建VPS并支持VPN
  2. Openwebrtc
  3. 关于JS 事件冒泡和onclick,click,on()事件触发顺序
  4. 为什么使用ConcurrentHashMap
  5. Moqui之时间转换
  6. Batman+joker乱谈
  7. Nginx做反向代理总是被系统kill
  8. android防止系统截屏
  9. bzoj3997[TJOI2015]组合数学
  10. 【自学php】第三天 - 读写文件
  11. Vmdk文件如何使用,vmdk导入虚拟机VMware8.0教程
  12. Android的cookie的接收和发送
  13. C#内置函数 RunSql的使用
  14. python_装饰器_语法糖
  15. phpmyadmin 上传超过50m限制
  16. Layer For Mobile 弹窗 input输入文字后,点击取消确定按钮失效(需点击两次)
  17. [skill][debug][gdb] 使用core dump 进行GDB
  18. 国内好的python学习地址
  19. ueditor富文本框图片显示
  20. 解决 Attempting to destroy the window while drawing!

热门文章

  1. js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题
  2. delphi 线程教学第五节:多个线程同时执行相同的任务
  3. Tomcat安装及问题排查方法
  4. 配置 docker0 网桥
  5. How to Change Default Web ADI Upload Parameters for FlexField Import / Validation
  6. Android中典型的ROOT原理(5)
  7. [csdn markdown]使用摘记三 简便快捷的流程图
  8. Linux 高性能服务器编程——IP协议详解
  9. SQLite Insert 语句(http://www.w3cschool.cc/sqlite/sqlite-insert.html)
  10. EBS销售(OE)模块常用表