1

近几天来,我一直在为此撞墙,希望有人能指出我正确的方向。

在一个非常大的 Flash 应用程序中工作,以前在 AS2/CS3 中,我会有如下设置:

root.swf
-- modules
---- code_a.swf
---- code_b.swf
-- views
---- view_a.swf
---- view_b.swf

使用_exclude.xml文件,我可以排除在输出 .swfcode_acode_b.swf 中定义的view_aview_broot.swf将负责在view_aor之前加载代码模块view_b,确保存在view_aview_b依赖的类定义。

问题

我们最近迁移到使用 Actionscript 3/CS5。*_exclude.xml文件不再存在。为了获得与上述相同的功能,我尝试了以下方法:

我的设置现在看起来像:

root.swf
-- modules
---- class_a.as
---- class_b.as
-- views
---- view_a.swf
---- view_b.swf

使用mxmlccompileroot.swf和传递 it选项view_a.swf来指定将被外部加载的类(在 中的两个类)。这可确保从编译的 swf 中排除该类。view_b.swf-externsmodules

用于compc编译class_a.asclass_b.as进入classes.swf-directory=true用于访问library.swf外部加载。

但是,当我尝试运行依赖于 的两个视图文件之一时classes.swf,我收到运行时错误,告诉我类定义不存在。

当前的解决方法

我设计了一个我目前不满意的解决方法,因为它倒退到我之前使用的模块化方法:

我没有加载代码模块,而是将子电影所需的所有类定义静态链接到root.swf. 在构建时root.swf,我使用-link-report选项mxmlc来提供包含类的列表。在构建子 swfs 时,我可以使用-load-externs来确保已经存在的类定义不会包含在编译输出中。

有没有人知道复制我使用 AS3/CS5 的 AS2/_exclude.xml 解决方案的方法?

4

1 回答 1

0

我建议将共享库编译为 SWC。

还有其他选项,例如 RSL:

http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf674ba-7fff.html#WS2db454920e96a9e51e63e3d11c0bf69084-7f1e

希望有帮助。

于 2011-07-16T01:36:59.733 回答