我有一个通用的库项目(支持浏览器,移动和桌面配置文件)和一个在浏览器中运行并依赖于此库的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覆盖。我不知道如何解决。任何帮助,将不胜感激。
答案 0 :(得分:1)
include-library
是错误的标记。这意味着“完全”将整个库,无论是什么,无论是否在我的代码中引用到生成的SWF中。因此,尝试将其更改为<library-path dir="/where/is/your/library/">
,子节点{{1} }。
首先为两个运行时编译FcLibrary.swc是一个坏主意。只需为任何一个构建一个单独的构建。还要检查您是否在那里嵌入了任何外来代码。例如,外国人指的是Flex框架代码。您可能希望从最终版本中引用该代码。
除非您之前编译过SDK,否则您知道自己正在做什么不要针对SDK源进行编译。这在时间上都很糟糕,它确实使编译过程变得复杂。例如,某些来源依赖于PBJ编译器的存在,其他来源假设某些目录包含资产,或某些路径包含库或语言环境或其他一些设置,这些设置在第一次出现时可能会出错。
评论中的错误是无关的,但这就是它的意思:你已经编译了<include name="my.swc"/>
,也就是说,你已经指示编译器生成代码,它从一个位置加载RSL在处理使用Flex框架的项目时,这通常是一件好事,因为它处理框架库的多个加载并且可以为您的应用程序节省一些缓存。但问题是,您没有为错误消息中提到的目录授予对Flash播放器的访问权限。默认情况下,限制在访问网络的SWF中加载本地文件。要启用它,请转到http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html并将您的目录添加到允许列表中。通常情况下,您的开发环境会为您做到这一点(您实际上可以在本地执行此操作,也无需访问Internet),但第一种方法更简单。
答案 1 :(得分: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”。