近几天来,我一直在为此撞墙,希望有人能指出我正确的方向。
在一个非常大的 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_a
or之前加载代码模块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
使用mxmlc
compileroot.swf
和传递 it选项view_a.swf
来指定将被外部加载的类(在 中的两个类)。这可确保从编译的 swf 中排除该类。view_b.swf
-externs
modules
用于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 解决方案的方法?