项目发布时缺少XML数据

时间:2015-07-31 08:16:38

标签: actionscript-3 flash publish

我完成了我的第一个Flash / Actionscript项目,我觉得已准备好发布它。 这是问题所在:

在我的程序中,我引用了一些在一个XML文件中定义并通过代码加载的值。 当我在Flash中测试我的程序时,一切正常。 但是在我发布项目之后,应该由XML定义的所有参数都被设置为零。似乎发布的fla文件找不到它应该引用的XML。我希望程序在硬盘上没有原始XML文件的计算机上运行。

我必须应用哪些设置来解决此问题? 我该怎么办?

谢谢;)

1 个答案:

答案 0 :(得分:0)

与Ohlilie一样,当您发布加载到XML文件中的SWF(使用[Embed(source='myXmlFile.xml', mimeType="application/octet-stream")] public static const MyXml:Class; // To load the XML: var xml:XML = new XML(new MyXml()); )时,您需要始终将XML文件放在与SWF相同的相对位置,以便可以找到并加载它

但是,有一些解决方案可以避免这样做。

首先,如果您使用AIR,则可以将一堆文件打包在一起,只需将XML文件包含在包中即可。如果您的目标平台是桌面,那么使用AIR是一个很好的解决方案。

如果您不使用AIR,并且只想在本地运行SWF,则可以在编译时将XML嵌入SWF中。像这样:

var xml:XML = <xml><etc/></xml>

最后,一个快速但不可维护的解决方案是在AS3中内嵌XML:

embed

您可以将它放在.as文件中,该文件使用include包含在您的AS3中,这使您非常接近URLLoader XML文件语法。

请注意,嵌入XML确实意味着更新XML的唯一方法是重新编译SWF本身。但是,您还可以增强所有这些方法,以首先检查外部XML文件是否存在于预期位置(如前所述使用<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <GridView android:numColumns="auto_fit" android:gravity="center" android:columnWidth="100dp" android:stretchMode="columnWidth" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/grid" android:background="#fff7ff" /> </LinearLayout> ),并且仅当未找到XML文件时才会回退到嵌入式XML作为默认值。通过这种方式,您可以获得可以独立工作的SWF,也可以使用外部XML文件进行配置。