index.base.net.byteLoader类讲解:
基本功能按字节加载图片,swf等
构造函数
publicfunctionByteLoader(url:String="")
如果传入了参数url,则立即执行加载!
load加载方法
publicfunctionload(_url:String):void
开始加载,_url是加载的地址
updata更新数据方法
publicfunctionupdata():void
更新缓冲区的可读字节
close关闭方法
publicfunctionclose():void
类使用完毕,清除所有无用的数据,也可以用来强行关闭数据流,停止下载
data属性
publicvardata:ByteArray
返回加载的字节
url属性
publicvarurl:String
返回加载的url
isLoad属性(只读)
publicfunctiongetisLoad():Boolean
返回是否有数据在加载
ProgressEvent.PROGRESS事件
加载的过程中调度,并附带加载情况
Event.COMPLETE事件
加载完毕调度
例子:
importindex.base.net.ByteLoader;
varbl:ByteLoader=newByteLoader;
bl.load("http://www.xiaos8.com/uploads/pro/50preso3a2.swf");
bl.addEventListener(Event.COMPLETE,completeFun);
bl.addEventListener(ProgressEvent.PROGRESS,progressFun);
functioncompleteFun(e:Event):void{
varloader:Loader=newLoader;
loader.loadBytes(bl.data);
addChild(loader);
bl.removeEventListener(Event.COMPLETE,completeFun);
bl.removeEventListener(ProgressEvent.PROGRESS,progressFun);
bl.close();
bl=null;
}
functionprogressFun(e:ProgressEvent):void{
trace(e.bytesLoaded);
//如果是渐进式格式的jpeg图片,那么在发布这个事件的时候读取字节,用Loader.loadBytes加载,就可以形成边加载边显示
}
源代码:
复制代码 代码如下:
packageindex.base.net{
importflash.events.EventDispatcher;
importflash.events.ProgressEvent;
importflash.events.Event;
importflash.utils.ByteArray;
importflash.net.URLStream;
importflash.net.URLRequest;
publicclassByteLoaderextendsEventDispatcher{
publicvarurl:String;
publicvardata:ByteArray;
privatevarstream:URLStream;
publicfunctionByteLoader(url:String=""){
if(url!=""){
load(url);
}
}
//加载
publicfunctionload(_url:String):void{
url=_url;
data=newByteArray;
stream=newURLStream;
stream.load(newURLRequest(url));
stream.addEventListener(Event.COMPLETE,completeFun);
stream.addEventListener(ProgressEvent.PROGRESS,progressFun);
}
//加载中
privatefunctionprogressFun(e:ProgressEvent):void{
if(stream.bytesAvailable==0)return;
updata();
dispatchEvent(e);
}
//加载完成
privatefunctioncompleteFun(e:Event):void{
stream.removeEventListener(Event.COMPLETE,completeFun);
stream.removeEventListener(ProgressEvent.PROGRESS,progressFun);
updata();
if(isLoad)stream.close();
dispatchEvent(e);
}
//更新数据
publicfunctionupdata():void{
if(isLoad)stream.readBytes(data,data.length);
}
//清除数据
publicfunctionclose():void{
if(isLoad)stream.close();
stream=null;
data=null;
}
//获取是否有数据在加载
publicfunctiongetisLoad():Boolean{
if(stream==null)returnfalse;
returnstream.connected;
}
}
}