actionscript 3 - *_exclude.xml文件的AS3替代品,动态加载类定义



这几天我一直在为这件事绞尽脑汁,希望有人能给我指出正确的方向。

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

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

使用_exclude.xml文件,我可以从view_aview_b的输出.swf中排除code_acode_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.swf, view_a.swfview_b.swf,传递-externs选项指定将从外部加载的类(modules中的两个类)。这确保类被排除在编译的swf之外。

使用compc编译class_a.asclass_b.asclasses.swf,使用-directory=true访问library.swf进行外部加载。

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

当前工作区

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

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

有没有一种方法,任何人都知道复制AS2/_exclude.xml解决方案,我使用AS3/CS5?

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

还有其他选项,如RSLs:

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

希望对你有帮助。

最新更新