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

应用框架

模块

Libgdx包含五个核心接口与操作系统交互,各自实现了如下接口:

  • Application:运行应用,向client通知应用层事件,例如窗口大小的改变(window resizing)。提供log功能与关于诸如内存使用情况的查询的方法。
  • Files:访问运行平台的文件系统。提供不同平台下文件访问的抽象,不与JAVA的文件类交互。
  • Input:向client通知用户输入,例如键鼠操作、触摸或加速度传感器事件。支持轮询检测和时间驱动的处理方式。
  • Net:提供跨平台的通过HTTP/HTTPS协议访问资源的方式,以及创建服务器与客户端的TCP连接。
  • Audio:提供播放声音与音乐流的方式,以及直接访问PCM音频输入输出设备。
  • Graphics:封装OpenGL ES 2.0的功能,允许查询/设置视频模式与类似的东西。

启动类(Starter Classes)

这是需要写的唯一平台相关的代码,称为starter classes。对每个目标平台,仅需一小段代码即可实例化一个应用接口的具体实现。例如对于Desktop平台,看起来会像是这样:(使用Lwjgl后端)

public class DesktopStarter {
   public static void main(String[] argv) {
      LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
      new LwjglApplication(new MyGame(), config);
   }
}

对Android平台,会是这样:

public class AndroidStarter extends AndroidApplication {
   public void onCreate(Bundle bundle) {
      super.onCreate(bundle);
      AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
      initialize(new MyGame(), config);
   }
}

这两个类通常存在于单独的工程中,例如一个Desktop工程和一个Android工程。

而应用的实际代码写在实现了 ApplicationListener 接口的类中(在上面例子中的 MyGame )。这个类的实例被传入各个平台的应用后端实现的初始化方法中(如上)。应用会在合适的时机调用 ApplicationListener 的方法。

访问模块

之前提到的模块可以通过Gdx类的静态字段来访问。这本质上是一系列的全局变量,可以用来方便地访问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 用来访问文件等等。

原文地址:https://www.cnblogs.com/sunshy/p/3641922.html