Android 游戏框架 libgdx 学习笔记 - 框架介绍

英文原文地址:[url]https://code.google.com/p/libgdx/wiki/Application[/url]

引用本文请注明来源:[url]http://yhz61010.iteye.com/blog/1939613[/url]

[b]什么是 Back-ends[/b]
  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 时会有一些限制,详细信息可以查看如下地址:[url]https://github.com/libgdx/libgdx/tree/master/backends/gdx-backends-gwt/issues.txt[/url]

[b]模块[/b]
  模块是 libgdx 的核心,它由五个接口组成,用于和操作系统的交互。每一个 back-end 都实现了这些接口。
[list]
[*]Application:负责运行应用并通知 API 客户端应用级别的事件。例如,调整窗口大小等。提供 Log 功能及一些查询方法。例如,查询内存使用情况等。
[*]Files:暴露平台底层的系统文件。在自定义的 Filehandle 系统之上(并不是使用 Java 的 File 类进行内部操作),提供了一个对文件位置的不同类型的抽象。
[*]Input:通过 API 客户端关于用户的输入,例如,鼠标,键盘,触摸事件,或加速计事件。支持轮询和事件驱动两种处理方式。
[*]Audio:提供了关于音效和流音乐的回话以及直接访问音频设备(PCM 音频的输入/输出)的能力。
[*]Graphics:可以使用 OpenGL ES 1.x 和 2.0(如果可用的话),还允许查询或设置视频模式等。
[/list][b]起始类(Starter Classes)[/b]
  唯一需要写的关于平台相关的代码,我们管它叫做“起始类(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 中的配置,请参见如下地址:[url]https://code.google.com/p/libgdx/wiki/ProjectSetupNew[/url]

  那么,一个游戏真正的代码通过被放在一个实现了 ApplicationListener 的类中。然后将该类的实例分别传给不同的 back-end 的 Application 接口实现的初始化方法(例如上面两段代码例)。在恰当的时候,应用程序会调用 ApplicationListener 中的相应方法(详细内容,请参见“生命周期” [url]https://code.google.com/p/libgdx/wiki/ApplicationLifeCycle[/url])。

[b]访问模块[/b]
  可以通过 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 可以访问文件接口等。

[b]附录[/b]
Libgdx 生命周期图
[img]http://ylib.sinaapp.com/resources/images/libgdx/application_lifecycle_diagram.png[/img]
数据中心机房是现代信息技术的核心设施,它承载着企业的重要数据和服务,因此,其基础设计与规划至关重要。在制定这样的方案时,需要考虑的因素繁多,包括但不限于以下几点: 1. **容量规划**:必须根据业务需求预测未来几年的数据处理和存储需求,合理规划机房的规模和设备容量。这涉及到服务器的数量、存储设备的容量以及网络带宽的需求等。 2. **电力供应**:数据中心是能源消耗大户,因此电力供应设计是关键。要考虑不间断电源(UPS)、备用发电机的容量,以及高效节能的电力分配系统,确保电力的稳定供应并降低能耗。 3. **冷却系统**:由于设备密集运行,散热问题不容忽视。合理的空调布局和冷却系统设计可以有效控制机房温度,避免设备过热引发故障。 4. **物理安全**:包括防火、防盗、防震、防潮等措施。需要设计防火分区、安装烟雾探测和自动灭火系统,设置访问控制系统,确保只有授权人员能进入。 5. **网络架构**:规划高速、稳定、冗余的网络架构,考虑使用光纤、以太网等技术,构建层次化网络,保证数据传输的高效性和安全性。 6. **运维管理**:设计易于管理和维护的IT基础设施,例如模块化设计便于扩展,集中监控系统可以实时查看设备状态,及时发现并解决问题。 7. **绿色数据中心**:随着环保意识的提升,绿色数据中心成为趋势。采用节能设备,利用自然冷源,以及优化能源管理策略,实现低能耗和低碳排放。 8. **灾难恢复**:考虑备份和恢复策略,建立异地灾备中心,确保在主数据中心发生故障时,业务能够快速恢复。 9. **法规遵从**:需遵循国家和地区的相关法律法规,如信息安全、数据保护和环境保护等,确保数据中心的合法运营。 10. **扩展性**:设计时应考虑到未来的业务发展和技术进步,保证机房有充足的扩展空间和升级能力。 技术创新在数据中心机房基础设计及规划方案中扮演了重要角色。例如,采用虚拟化技术可以提高硬件资源利用率,软件定义网络(SDN)提供更灵活的网络管理,人工智能和机器学习则有助于优化能源管理和故障预测。 总结来说,一个完整且高效的数据中心机房设计及规划方案,不仅需要满足当前的技术需求和业务目标,还需要具备前瞻性和可持续性,以适应快速变化的IT环境和未来可能的技术革新。同时,也要注重经济效益,平衡投资成本与长期运营成本,实现数据中心的高效、安全和绿色运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值