近几天来,我一直在为此撞墙,希望有人能指出我正确的方向。
在一个非常大的 Flash 应用程序中工作,以前在 AS2/CS3 中,我会有如下设置:
root.swf
-- modules
---- code_a.swf
---- code_b.swf
-- views
---- view_a.swf
---- view_b.swf
使用_exclude.xml文件,我可以排除在输出 .swfcode_a和code_b.swf 中定义的view_a类view_b。root.swf将负责在view_aor之前加载代码模块view_b,确保存在view_a和view_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.as和class_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 解决方案的方法?