libgdx中延迟加载资源文件

来源:互联网 发布:自学英语知乎 编辑:程序博客网 时间:2024/05/16 12:25

    使用libgdx开发有一段时间了,一直比较忙,没来得及整理,这里先写上最近遇到的一个问题,以后在慢慢整理。

    libgdx能够兼容desktop和android不同平台,使程序的使用范围更大,不过这也造成了一些问题,如果想实现Android或desktop中的特有功能,就比较麻烦。前段时间经过一些开发,用了Android上的MIDI,jet,大致了解了如何实现,今天看了一些libgdx的源代码,发现源代码中也是都是这么实现的。

    libgdx实现平台特定功能的方法(这种思想比较好):在libgdx中定义一个接口,定义需要实现的功能,然后在android端和desktop端分别进行不同的实现,在实例化游戏实例的时候,传入这些实例。

    这次项目资源文件比较多,加载时间比较长,所以就想先显示loading画面,最开始想法比较简单,在create的方法中,载入资源文件前调用setScreen,后来发现在create函数结束前,render和update的方法都不会被调用的,ui线程也是单线程嘛。

    于是便在程序中加入各种runnable(之前还有很多现在看来很好笑的尝试,创建两个activity....),发现无论在什么位置加都有各种问题,现在明白了,和挺多有ui的程序类似,前一段时间eclipse插件开发也遇到过,ui本身是一个线程,含有一些资源,如果在其他线程访问就会有各种问题,所以出现了runonuithread等之类的方法。

    那在libgdx中怎么实现呢,libgdx考虑到了这一点,在Application中定义了public void postRunnable(Runnable runnable);这一接口,在Android和desktop中分别进行不同的实现,所以我们调用这个方法就可以了,Gdx.app.postRunnable(runnable);

    Application接口定义了一些平台相关的功能,进行不同实现,还看到了public Preferences getPreferences(String name);,这可以直接在libgdx中使用android的preference.

    所以,用libgdx的时候,只有一些很基本的平台相关功能libgdx进行了实现,大多数需要我们自己写的,定义一个接口,也很容易的~.

原创粉丝点击