使用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进行了实现,大多数需要我们自己写的,定义一个接口,也很容易的~.

更多相关文章

  1. Android绘图系列(一)——自定义View基础
  2. Unity3D游戏开发之Unity与Android交互调用研究
  3. Android(安卓)访问 .net C#写的webservice
  4. Android真正的静默安装
  5. Android中实现IPC的几种方式详细分析及比较
  6. android 解决listview.notifyDataSetChanged刷新时Imageloader加
  7. android 自定义xml存储方式以及存储位置
  8. 【Android】PopupWindow中使用listview,listview的点击事件响应很
  9. Android的schedule、AlarmService、Timer定时器机制

随机推荐

  1. android 获取 imei号码
  2. Android(安卓)SDK下载和更新失败的解决方
  3. Android屏蔽开机引导页面
  4. Android(安卓)M PackageManagerService解
  5. android 获取 imei号码
  6. Android(安卓)Studio 插件(二)
  7. android的ant脚本自动生成模板
  8. Android设备重启(reboot)---Android(安卓
  9. 【Android】App界面与顶部状态栏重叠遮盖
  10. Android最好看的圆形进度条ProgressBar