???flex中比较少人使用相关的反射,主要原因是因为avm编译模式,没办法做到java般的灵活的反射,那么就比较容易失去工厂模式的灵活的特性,但是flex也有相关反射,主要是用户swc和swf的反射,可以直接在内部提取class使用。
????? 1、元数据捆绑问题
???? 相信很多朋友也遇到相关问题
???
view plain
copy to clipboard
print
?
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
- [Embed(source="resource/image/config/canvasLoading.gif"?,?mimeType="application/octet-stream")]??
-
????????public?var?_loadingGif:Class;??
???? 如果一个项目中捆绑过多元数据就会造成swf体积过大,但是往往也要面对一个需求,就是无需修改主要的flex源代码就可以修改嵌入文件的需求,那么用swc嵌入文件,再用flex动态加载swc是最好的办法了。
?? 2、动态加载模块的问题
??? 某些项目在前端的flex有可能动态加载某些模块的源代码,这些可能动态加载的UI、utils或者一些skin,放在动态加载的swc中也是一个比较好的解决方案;
?? 3、Licence的动态加载
?? 这个是我最常用的地方。
?
?????相关的用途就不描述那么多,如果有需要的朋友就可以找到优点了:
???? 动态加载swc
???
????????????????????
?? 使用教程
?? 首先动态加载swc
??
view plain
copy to clipboard
print
?
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
-
var?swcManage:SwcManager?=new?SwcManager;??
-
????????????swcManage.loadSwc("framework.swc",loadComplete);??
? 其次实例化object
?
view plain
copy to clipboard
print
?
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
-
private?function?loadComplete():void{??
-
var?o:Object=ReferenceUtil.referenceClass("Licence.file::LicenceFile");??
- }??
?获取到swc中的实例就可以非常容易做相关的操作;
?
? 另外附上动态加载swf源代码
?
view plain
copy to clipboard
print
?
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
-
package?com.shine.framework.Swf??
-
{??
-
????import?flash.display.Loader;??
-
????import?flash.events.Event;??
-
????import?flash.net.URLRequest;??
-
??????
-
????import?mx.controls.Alert;??
-
????import?mx.core.UIComponent;??
-
??????
-
????public?class?SwfManager?extends?UIComponent??
-
????{??
-
??????????
-
????????public?var?swfUrl:String="";??
-
??????????
-
????????public?var?method:Function;??
-
??????????
-
????????public?function?SwfManager(value:String=null,completeMethod:Function=null)??
-
????????{??
-
????????????super();??
-
??????????????
-
????????????if(value!=null){??
-
????????????????this.swfUrl=value;??
-
????????????}??
-
??????????????
-
????????????if(completeMethod!=null){??
-
????????????????this.method=completeMethod;??
-
????????????}??
-
????????}??
-
??????????
-
??????????
-
????????public?function?loadSwf(value:String=null,completeMethod:Function=null):void{??
-
????????????if(value!=null){??
-
????????????????this.swfUrl=value;??
-
????????????}??
-
??????????????
-
????????????if(completeMethod!=null){??
-
????????????????this.method=completeMethod;??
-
????????????}??
-
??????????????
-
????????????if(this.swfUrl!=null){??
-
????????????????var?loader:Loader?=?new?Loader();????
-
????????????????loader.contentLoaderInfo.addEventListener(Event.COMPLETE?,swfLoaded);????
-
????????????????loader.load(new?URLRequest(this.swfUrl));??
-
????????????}else{??
-
????????????????Alert.show("不可以加载空的swc地址");??
-
????????????}??
-
????????}??
-
??????????
-
??????????
-
????????private?function?swfLoaded(e:Event):void??
-
????????{??
-
????????????if(method!=null)??
-
????????????????method.call(this);??
-
????????}??
-
????}??
- }??
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|