flex的单线程以及事件机制,导致了它在加载文件的时候不能多个文件一起加载,这种功能用起来有时候确实稍感繁琐。之前我的解决方案是用一个数组装载需要加载的资源路径,在一个加载完后的监听函数中便删除该路径,继续从装载资源路径的数组中取值加载,直到装载数组得长度为0,删除监听函数。某日在网上游荡,恰巧发现了某仁兄自己写了可以加载多个资源的封装类,甚喜,于是test了一把,还真行!
该封装类叫BulkLoader,用法很简单,add("key")(依次把你要加载的资源add进去),loader,complete,就三步,在compolete中你可以得到一个Dictionary,通过之前的key就可以得到你所加载资源的数据了。弱弱的看了下他的实现,思路跟我的差不多,就是加载完了一个紧接着加载下一个,加载一个删除一个,亮点之处在他对不同资源的加载进行了封装,比如可以是xml,jpg等,不用自己去处理了,不过稍有遗憾,他没有对gif格式的图片进行加载封装,有兴趣的可以自己加上。总之上个人觉着还可以吧,看自己,哪个爽用哪个。
测试代码如下:
加载gif的第一帧
var dic:Dictionary = loader.contents as Dictionary
/* var dic:Dictionary = loader.contents as Dictionary;
for(var key:Object in dic){
trace("---key:"+key+"------------value:"+dic[key]) ;
}
var pic:Bitmap = dic["assets/s.gif"] as Bitmap; */
//var bgBitmap:Bitmap = loader.getBitmap("assets/s.gif");
var bgBitmap:Bitmap = dic["assets/s.gif"];
var ui:UIComponent = new UIComponent();
ui.addChild(bgBitmap);
addChild(ui);
var video:Video=new Video();
//video.attachNetStream(loader.getNetStream("asset s/vs.flv"));
//parseConfig(loader.getXML("assets/config.xml"));
}
]]>
该封装类叫BulkLoader,用法很简单,add("key")(依次把你要加载的资源add进去),loader,complete,就三步,在compolete中你可以得到一个Dictionary,通过之前的key就可以得到你所加载资源的数据了。弱弱的看了下他的实现,思路跟我的差不多,就是加载完了一个紧接着加载下一个,加载一个删除一个,亮点之处在他对不同资源的加载进行了封装,比如可以是xml,jpg等,不用自己去处理了,不过稍有遗憾,他没有对gif格式的图片进行加载封装,有兴趣的可以自己加上。总之上个人觉着还可以吧,看自己,哪个爽用哪个。
测试代码如下:
加载gif的第一帧
var dic:Dictionary = loader.contents as Dictionary
/* var dic:Dictionary = loader.contents as Dictionary;
for(var key:Object in dic){
trace("---key:"+key+"------------value:"+dic[key]) ;
}
var pic:Bitmap = dic["assets/s.gif"] as Bitmap; */
//var bgBitmap:Bitmap = loader.getBitmap("assets/s.gif");
var bgBitmap:Bitmap = dic["assets/s.gif"];
var ui:UIComponent = new UIComponent();
ui.addChild(bgBitmap);
addChild(ui);
var video:Video=new Video();
//video.attachNetStream(loader.getNetStream("asset s/vs.flv"));
//parseConfig(loader.getXML("assets/config.xml"));
}
]]>