flash模块开发
发布:Coamy | 发布时间: 2010年6月28日模块开发对于大项目而言还是蛮有用的。优点很多啊。使用flex进行模块开发还不错,毕竟人家都已经提供了module。我是没有深入研究它里面的实现。不过可以肯 定的一点就是:使用Loader来载入各个模块,被载入模块依附主体模块。 我说的依附,就是使用主体的类资源。
这个原理同样可以用在flash模块开发:在主swf中使用Loader来加载各个模块swf——当然是加载到同程序域(ApplicationDomain)下;加载 到别的程序域里也可以,不过在各模块通信时就比较麻烦点。
接下来就是各模块的通信了。一般的方法是使用接口:每个模块swf实现一个或多个接口,主swf加载模块后通过调用接口方法来通信,比如模块B.swf实 现了接口IEventDispacher(当然也可以自定义接口),然后在主swf中使用Loader加载后:
var eventDispacher:IEventDispacher = loader.content as IEventDispacher;
然后便可以调用IEventDispacher定义的方法来与模块通信。
这是面向接口的编程思想——接口是个好东西啊!当然,还有一种不是面向接口的调用:
var obj:Object = loader.content;
然后你模块中定义了什么方法,就在obj上使用什么方法。要是你是一个人开发,那没什么问题,反正模块有什么方法你也知道。但是如果是一个团队的协同开 发,还是面向接口好。
以上是关于模块开发中的模块通讯。然后就是怎么发布各个模块。很多时候各个模块是公用很多资源的,比如你写了个StringUtils类,然后在各个模块 中都使用到了。这时候你使用传统的flash导出发布后,每个模块都把这个类编译进去了。而实际上,只需要在主swf中存在该类就可 以了——当模块swf被加载到与主swf同域后完全可以直接使用主swf已定义的类资源。
于是你需要将各个模块swf中公用部分的资源剔除,或者是在编译时exclude——两种方法:
1:剔除,就是从已编译后的模块swf中剔除一些主swf存在的类。你可以在这里使用swf picker>>>
2:exclude。原理是使用jsfl文件+一个exclude列表来执行编译导出。文件可以 在这里下 载>>>
使用方法:
如果你的文件为abc.fla,将_exclude.jsfl改命为abc_exclude.jsfl,将_exclude.xml改命为 abc_exclude.xml,都放置与abc.fla同目录下;在abc_exclude.xml中添加需要exclude的类名称。然后执行 abc_exclude.jsfl文件即可。
申明:exlcude方法作者地址为:http://exanimo.com/actionscript/flash-cs3-and-exclude-xml/
来源:http://bbs.9ria.com/thread-21348-1-1.html
- 相关文章:
AStar A*寻路算法 (2010-6-24 21:29:52)
AS3事件中target和currentTarget的区别 (2010-1-18 14:20:36)
as3数组的浅复制和深复制 (2010-1-18 11:45:38)
as3悬停提示框类 (2010-1-13 11:9:42)
ColorTransform 构造函数 - as3 (2010-1-11 14:33:22)
AS3是深度复制数组的 (2010-1-11 14:32:24)
让父swf获得子swf的事件(as3) (2010-1-11 14:31:30)
actionscript3技巧与提示(10) (2009-10-30 10:31:41)
用Point类计算两点间距离 actionscript (2009-10-29 14:47:17)
actionscript3 数组详解 (2009-10-29 11:46:11)
发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。





