BulkLoader

BulkLoader提供简单的载入函数,不管要载入的是xml、swf还是声音文件,都只使用同一接口。功能强大,十分推荐。

 

用法,载入xml文件:

var bulkLoader:BulkLoader = new BulkLoader('main loading');
bulkLoader.add('my_xml_file.xml');
bulkLoader.start();

引用前面载入的资源:

var myXML:XML = BulkLoader.getLoader("main loading").getXML("my_xml_file.xml");

 

更全面的用法:

 

package { 
import br.com.stimuli.loading.BulkLoader
import br.com.stimuli.loading.BulkProgressEvent
import flash.events.*; 
import flash.display.*; 
import flash.media.*; 
import flash.net.*; 

public class SimpleExampleMain extends MovieClip { 
public var loader : BulkLoader; 
public var v : Video; 
public var counter : int = 0; 

public function SimpleExampleMain() { 
//构建BulkLoader的时候需要给它一个名称 
loader = new BulkLoader("main-site"); 
//设置输出日志 
loader.logLevel = BulkLoader.LOG_INFO; 
//构建好了以后,通过add方法往队列里添加需要加载的对象 
loader.add("photo.png"); 
//添加加载对象时候,也可以给它添加一个id,方便以后调用 
loader.add("images.jpg", {id:"bg"}); 
//还可以通过priority属性调整加载对象的加载顺序,priority值越大,优先权越高,越早加载 
loader.add("list.xml", {priority:20, id:"config-xml"}); 
//加载一个动画,加载动画的时候可以用pausedAtStart属性暂停播放动画 
loader.add("mov.fla", {maxTries:6, id:"the-video", pausedAtStart:true}); 
//maxTries属性用于设定加载失败时的重试次数,注意,这里的“id”用了字符串命名 
loader.add("song.mp3", {"id":"soundtrack", maxTries:1, priority:100});

//看了最新版本的文档,已经开始支持swf和json,一阵欣喜。


//添加一个COMPLETE事件,这个事件会在队列里的所有对象都加载完毕后触发 
loader.addEventListener(BulkLoader.COMPLETE, onAllItemsLoaded); 

//添加一个PROGRESS事件,这个事件会在队列加载时不断触发。通常可以用于监听加载进度。 
loader.addEventListener(BulkLoader.PROGRESS, onAllItemsProgress); 

//队列编辑完毕后用star方法开始加载队列 
loader.start(); 

public function onAllItemsLoaded(evt : Event):void { 
trace("every thing is loaded!"); 
//建立一个Video对象 
var video : Video = new Video(); 
//从队列里提取刚才加载的视频流 
var theNetStream : NetStream = loader.getNetStream("the-video"); 
addChild(video); 
video.attachNetStream(theNetStream); 
theNetStream.resume(); 
video.y = 300; 
//提取图片 

//可以直接通过url提取对象 

var bitmapCats : Bitmap = loader.getBitmap("photo.png"); 
bitmapCats.width = 200; 
bitmapCats.scaleY = bitmapCats.scaleX; 
addChild(bitmapCats); 

//当然,也可以通过id提取对象 
var bitmapShoes : Bitmap = loader.getBitmap("bg"); 
bitmapShoes.width = 200; 
bitmapShoes.scaleY = bitmapShoes.scaleX; 
bitmapShoes.x = 220; 
addChild(bitmapShoes); 

//提取音频 
var soundtrack : Sound = loader.getSound("soundtrack"); 
soundtrack.play(); 

//提取一个xml文档 
var theXML : XML = loader.getXML("config-xml"); 
trace(theXML); 

//通过BulkProgressEvent的loadingStatus方法可以显示加载过程中的所有信息! 
public function onAllItemsProgress(evt : BulkProgressEvent):void { 
trace(evt.loadingStatus()); 


}


这里特别提出一点,就是加入progess事件,当载入的对象太多,函数中的totalBytes并不能同步获取所有资源的 Bytes,evt.loadingStatus()方法列出了所有的onProgess可以检测到的属性,通过N此检测,我确信这是一个BUG。 loadedBytes是正常显示,而totalBytes会在loading接近尾声的时候才能够获取。我查看了code.google的文档,找到了 一个方法,还没有去验证 loader.get("id").addEventListener(Event.COMPLETE,onBackgroundLoaded)获取众多 资源中的特定支援,应用在Complete方法上,这样是否同样可以应用在PROGRESS恩?如果在获取每个单一资源的以后执行break,再把单一资 源的totalBytes相加在一起,是否可以得出我们在总的onProgess方法里获取不到的totalBytes?

你可能感兴趣的:(xml,json,.net,Google,Flash)