【问题标题】:XML Data missing when project gets published项目发布时 XML 数据丢失
【发布时间】:2015-10-22 20:22:14
【问题描述】:

我完成了我的第一个 Flash/Actionscript 项目,我准备发布它。 问题来了:

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

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

谢谢 ;)

【问题讨论】:

  • 您是如何发布的? exe还是swf?
  • 我尝试发布 swf 和 html,都具有上述结果
  • 您需要将xml文件与swf文件一起放置,或者您需要上传到某个地方并通过互联网访问它。
  • 所以如果您处于离线状态并且您的硬盘上没有 XML 文件,就没有运行该程序的选项?
  • 太可惜了!谢谢哥们!

标签: actionscript-3 flash publish


【解决方案1】:

就像 Ohlilie 所说,当您发布加载到 XML 文件中的 SWF 时(使用 URLLoader),您需要始终将 XML 文件放在与 SWF 相同的相对位置,以便可以找到并加载它。

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

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

如果您不使用 AIR,而只想在本地运行 SWF,则可以在编译时将 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 内联嵌入到 AS3 中:

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

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

请注意,嵌入 XML 确实意味着更新 XML 的唯一方法是重新编译 SWF 本身。但是,您还可以增强所有这些方法,以首先检查外部 XML 文件是否存在于预期位置(如以前一样使用 URLLoader),并且只有当找不到 XML 文件时,它才会回退到嵌入的 XML 作为默认。通过这种方式,您可以获得一个可以独立工作的 SWF,也可以使用外部 XML 文件进行配置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2015-01-17
    • 2018-06-17
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    相关资源
    最近更新 更多