• 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 用来访问文件等等。

  • 相关阅读:
    最近的几个坑
    最近对Allegro的几个总结
    sub drawing
    Allegro的几点小结
    产品量产的几个问题
    电源板问题的定位
    PCB学习
    servlet(6) 链接数据库
    servlet(5) HttpSession
    servlet(4)异常处理
  • 原文地址:https://www.cnblogs.com/sunshy/p/3641922.html
Copyright © 2020-2023  润新知