我已经差不多几天把头撞在墙上了,希望有人能指出我正确的方向。
在非常大型Flash应用程序中工作,之前在AS2 / CS3中,我将进行如下设置:
root.swf
-- modules
---- code_a.swf
---- code_b.swf
-- views
---- view_a.swf
---- view_b.swf
使用_exclude.xml
个文件,我可以从code_a
和code_b
的ouptut .swf中排除view_a
和view_b
中定义的类。 root.swf
将负责在view_a
或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
编译root.swf
,view_a.swf
和view_b.swf
,传递-externs
选项以指定将在外部加载的类(两个类在modules
)。这可以确保从编译的swf中排除该类。
使用compc
将class_a.as
和class_b.as
汇编到classes.swf
,使用-directory=true
访问library.swf
进行外部加载。
但是,当我尝试运行依赖于classes.swf
的两个视图文件之一时,我收到运行时错误,告诉我没有类定义。
当前解决方法
我已经设计了一个我目前不满意的解决方法,因为它反向我以前使用的模块化方法:
我不是加载代码模块,而是将子电影所需的所有类定义静态链接到root.swf
。在构建root.swf
时,我使用-link-report
的{{1}}选项来提供包含的类列表。在构建子swfs时,我可以使用mxmlc
来确保已经存在的类定义不会包含在编译输出中。
有没有人知道复制我使用AS3 / CS5的AS2 / _exclude.xml解决方案?
答案 0 :(得分:0)
我建议为SWC编译共享库。
还有其他选项,例如RSL:
希望有所帮助。