AS3替代* _exclude.xml文件,动态加载类定义

时间:2011-07-15 23:40:24

标签: actionscript-3 flash-cs5 mxmlc compc

我已经差不多几天把头撞在墙上了,希望有人能指出我正确的方向。

非常大型Flash应用程序中工作,之前在AS2 / CS3中,我将进行如下设置:

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

使用_exclude.xml个文件,我可以从code_acode_b的ouptut .swf中排除view_aview_b中定义的类。 root.swf将负责在view_aview_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

使用mxmlc编译root.swfview_a.swfview_b.swf,传递-externs选项以指定将在外部加载的类(两个类在modules)。这可以确保从编译的swf中排除该类。

使用compcclass_a.asclass_b.as汇编到classes.swf,使用-directory=true访问library.swf进行外部加载。

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

当前解决方法

我已经设计了一个我目前不满意的解决方法,因为它反向我以前使用的模块化方法:

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

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

1 个答案:

答案 0 :(得分:0)

我建议为SWC编译共享库。

还有其他选项,例如RSL:

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

希望有所帮助。