我完成了我的第一个Flash / Actionscript项目,我觉得已准备好发布它。 这是问题所在:
在我的程序中,我引用了一些在一个XML文件中定义并通过代码加载的值。 当我在Flash中测试我的程序时,一切正常。 但是在我发布项目之后,应该由XML定义的所有参数都被设置为零。似乎发布的fla文件找不到它应该引用的XML。我希望程序在硬盘上没有原始XML文件的计算机上运行。
我必须应用哪些设置来解决此问题? 我该怎么办?
谢谢;)
答案 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文件进行配置。