[转]BulkLoader类的例子

BulkLoader是一个老外写的loader类。它能够对多个不同的外部文件进行队列下载,下载时能够获取单个对象的下载百分比和所有对象加起来的总体百分比~而且,能够对下载列表的优先级进行操作,还能够remove单个对象或者一次remove所有对象(呵呵~可以偷懒了:))十分方便!对象加载失败时还能够设定重试次数,如果超过重试次数,就放弃load这个对象。
下面这个是BulkLoader自带的一个例子。

 

复制代码
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("http://www.emptywhite.com/bulkloader-assets/cats.jpg");
//添加加载对象时候,也可以给它添加一个id,方便以后调用
loader.add("http://www.emptywhite.com/bulkloader-assets/shoes.jpg", {id:"bg"});
//还可以通过priority属性调整加载对象的加载顺序,priority值越大,优先权越高,越早加载
loader.add("http://www.emptywhite.com/bulkloader-assets/samplexml.xml", {priority:20, id:"config-xml"});
//加载一个动画,加载动画的时候可以用pausedAtStart属性暂停播放动画
loader.add("http://www.emptywhite.com/bulkloader-assets/movie.flv", {maxTries:6, id:"the-video", pausedAtStart:true});
//maxTries属性用于设定加载失败时的重试次数,注意,这里的“id”用了字符串命名
loader.add("http://www.emptywhite.com/bulkloader-assets/chopin.mp3", {"id":"soundtrack", maxTries:1, priority:100});

//添加一个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("http://www.emptywhite.com/bulkloader-assets/cats.jpg");
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());
}
}
}
复制代码
posted @   Atypiape  阅读(740)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示