在第一章节中,我们成功创建了demo应用,但我们没有讨论Ecplise项目之间是如何协同工作的,看看下面的图解,可以帮助你熟悉所有libGDX项目的结构模式 :
上图是四个目标平台项目的拼接图,最左边demo项目的代码被其他所有项目共享(被添加到Build Path中),demo应用的主类是MyDemo.java。不同于传统应用的主类(含有main函数),从现在起我们称之为启动类,注意,libGDX使用术语“启动类”来区分这两种不同类型的主类,以免被混淆。我们稍后将会深入学习启动类。
仔细看看上图所有项目的目录结构,你可能已经发现了存在两个assets文件夹,一个在demo-desktop中,另外一个在demo-android项目中,这便有了疑问,我们应该将应用资源放在哪个文件夹中?在这里,demo-android项目扮演了一个特殊角色,在上图中,可以看到有一个子文件夹叫做data,其中有一张图片叫做libgdx.png,这张图片也存在于demo-desktop项目中相同的地方。
【注意】请把所有的应用资源放到demo-android项目的assets文件夹中,这是因为Aandroid项目在构建构过程中需要直接访问assets文件夹下的资源文件,在这期间,将会在gen文件夹下自动生成一个Java资源文件,R.java,它包括了Aandroid项目可用资源的特殊信息。在Android应用开发中,通常都是通过Java代码来访问资源文件,然而,在libGDX开发中,你只需通过libGDX提供的方法去访问任何资源文件以实现独立于目标平台。在之后的章节你将会学到更多关于访问资源的技巧。
你可能想问其他平台的项目是如何做到资源同步访问的,不必多说,你本应该在每次资源变化的时候进行手动同步。
幸运的是,这个问题已经被生成器(Generator)解决了, demo-desktop项目使用了一个连接资源(linked resource,Eclipse的功能之一),它可以添加一个已存在的资源到工作空间的其他位置,你可以在demo-desktop项目上右键,依次选择Properties->Resource->Linked Resources查看相关配置。
demo-html项目需要通过另外一种方式实现资源同步,因为Google Web Toolkit (GWT)的构建过程和其他项目不同,这里有一个特殊的文件叫做GwtDefinition.gwt.xml,它允许你通过设置gdx.assetpath属性去更改资源文件的路径,请记住,这里尽可能的使用相对路径,如../ android/assets,以防工作空间从原始位置移除而引起程序崩溃。
下面是GwtDefinition.gwt.xml的代码清单:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit trunk//EN" "http://google-web-toolkit.googlecode.com/svn/trunk/ distro-source/core/src/gwt-module.dtd"> <module> <inherits name='com.badlogic.gdx.backends.gdx_backends_gwt' /> <inherits name='MyDemo' /> <entry-point class='com.packtpub.libgdx.demo.client.GwtLauncher' /> <set-configuration-property name="gdx.assetpath" value="../ android/assets" /> </module>
【完】
【译者注】
• 本节最后有介绍关于demo-robovm的相关配置,但由于RoboVM已经倒闭,开发者不能再申请使用,所以这里就直接省略了,现在libGDX的新iOS后端基于Multi-OS Engine,其官方也有较为完善的文档和演示,感兴趣的朋友可以先看看。
暂无关于此日志的评论。