0

我有一个通用的库项目(支持浏览器、移动和桌面配置文件)和一个在浏览器中运行并依赖于该库的 Flex 项目。当我从 Flash Builder 中调试或创建主应用程序的版本时,它在浏览器中运行良好。但是当我从我的 Ant 任务创建 SWF 时,我在运行时遇到了多个错误:

错误:

VerifyError: Error #1014: Class flash.data::SQLConnection could not be found.

错误:

ReferenceError: Error #1065: Variable _class_embed_css_Assets_swf_1175738391_mx_skins_cursor_BusyCursor_347371275 is not defined.

错误:

ReferenceError: Error #1065: Variable _class_embed_css_Assets_swf_1175738391_cursorStretch_1614050290 is not defined.

错误:

ReferenceError: Error #1065: Variable ImageButtonSkin__embed_mxml_Assets_swf___brokenImage_1468354307 is not defined.

这是我的 ANT 任务:

<!-- Build and output the Application.swf -->
<target name="Compile Flex" >

    <mxmlc file="${PROJECT_MXML_APPLICATION}" output="${PROJECT_OUTPUT_SWF}">

        <include-libraries dir="${FCLIB_BIN}" append="true">
            <include name="FcLibrary.swc" />
        </include-libraries>

    </mxmlc>
</target>

似乎 AIR 类正在编译到 SWF 中。看起来 defaults.css 可能会被 FcLibrary defaults.css 覆盖。我也不确定如何解决。任何帮助,将不胜感激。

4

2 回答 2

1
  1. include-library是使用错误的标签。它的确切含义是“将整个库,无论那里有什么,无论它是否在我的代码中引用到生成的 SWF 中。因此,尝试将其更改为<library-path dir="/where/is/your/library/">, with child nodes <include name="my.swc"/>

  2. 首先为两个运行时编译 FcLibrary.swc 是个坏主意。只需为任何一个单独构建。还要检查你没有在那里嵌入任何外来代码。例如,外国我指的是 Flex 框架代码。您可能希望从最终构建中引用该代码。

  3. 除非您之前编译过 SDK 并且您知道自己在做什么,否则不要针对 SDK 源代码进行编译。这在时间上都很糟糕,而且它确实使编译过程复杂化。例如,一些源依赖于 PBJ 编译器的存在,另一些则假定某些目录具有资产,或者某些路径包含库或语言环境或其他一些设置,您第一次很可能会出错。

  4. 您评论中的错误无关紧要,但这就是它的意思:您已使用 编译static-link-runtime-shared-libraries="false",也就是说,您已指示编译器生成代码,该代码从它认为它们所在的位置加载 RSL。这通常是一件好事在处理使用 Flex 框架的项目时要这样做,因为它可以处理框架库的多次加载,并且可以为您的应用程序节省一些缓存。但是,问题是您没有授予 Flash 播放器访问错误消息中提到的目录的权限。默认情况下,限制在用于访问网络的 SWF 中加载本地文件。要启用它,请访问http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html并将您的目录添加到允许列表中。通常,您的开发环境会为您执行此操作(您实际上可以在本地执行此操作,也无需访问 Internet),但第一种方法更简单。

于 2012-11-27T17:20:34.533 回答
0

我通过引用源路径而不是包含 SWC 解决了这个问题。

<target name="Compile Flex" >

    <mxmlc file="${PROJECT_MXML_APPLICATION}" output="${PROJECT_OUTPUT_SWF}">

        <source-path path-element="${FCLIB_SRC}"/>

    </mxmlc>
</target>

FCLIB_SRC 类似于“/Users/user/Documents/Workspace/FCLibrary/src”。

于 2012-11-26T22:24:12.790 回答