AS3自写类整理笔记:ByteLoader类

所属分类: 网页制作 / Flash 阅读数: 2185
收藏 0 赞 0 分享
index.base.net.byteLoader类讲解:
基本功能按字节加载图片,swf等

构造函数
public function ByteLoader(url:String = "")
如果传入了参数url,则立即执行加载!

load 加载方法
public function load(_url:String):void
开始加载,_url是加载的地址

updata 更新数据方法
public function updata():void
更新缓冲区的可读字节

close 关闭方法
public function close():void
类使用完毕,清除所有无用的数据,也可以用来强行关闭数据流,停止下载

data 属性
public var data:ByteArray
返回加载的字节

url 属性
public var url:String
返回加载的url

isLoad 属性(只读)
public function get isLoad():Boolean
返回是否有数据在加载

ProgressEvent.PROGRESS 事件
加载的过程中调度,并附带加载情况

Event.COMPLETE 事件
加载完毕调度

例子:


import index.base.net.ByteLoader;

var bl:ByteLoader = new ByteLoader;
bl.load("http://www.xiaos8.com/uploads/pro/50preso3a2.swf");
bl.addEventListener(Event.COMPLETE,completeFun);
bl.addEventListener(ProgressEvent.PROGRESS,progressFun);

function completeFun(e:Event):void{
  var loader:Loader = new Loader;
  loader.loadBytes(bl.data);
  addChild(loader);
  bl.removeEventListener(Event.COMPLETE,completeFun);
  bl.removeEventListener(ProgressEvent.PROGRESS,progressFun);
  bl.close();
  bl = null;
}

function progressFun(e:ProgressEvent):void{
  trace(e.bytesLoaded);
  //如果是渐进式格式的jpeg图片,那么在发布这个事件的时候读取字节,用Loader.loadBytes加载,就可以形成边加载边显示
}
源代码:

复制代码 代码如下:

package index.base.net{ 

  import flash.events.EventDispatcher; 
  import flash.events.ProgressEvent; 
  import flash.events.Event; 
  import flash.utils.ByteArray; 
  import flash.net.URLStream; 
  import flash.net.URLRequest; 

  public class ByteLoader extends EventDispatcher{ 

    public var url:String; 
    public var data:ByteArray; 
    private var stream:URLStream; 

    public function ByteLoader(url:String = ""){ 
      if(url != ""){ 
        load(url); 
      } 
    } 

    //加载 
    public function load(_url:String):void{ 
      url = _url; 
      data = new ByteArray; 
      stream = new URLStream; 
      stream.load(new URLRequest(url)); 
      stream.addEventListener(Event.COMPLETE,completeFun); 
      stream.addEventListener(ProgressEvent.PROGRESS,progressFun); 
    } 

    //加载中 
    private function progressFun(e:ProgressEvent):void{ 
      if(stream.bytesAvailable == 0) return; 
      updata(); 
      dispatchEvent(e); 
    } 

    //加载完成 
    private function completeFun(e:Event):void{ 
      stream.removeEventListener(Event.COMPLETE,completeFun); 
      stream.removeEventListener(ProgressEvent.PROGRESS,progressFun); 
      updata(); 
      if(isLoad) stream.close(); 
      dispatchEvent(e); 
    } 

    //更新数据 
    public function updata():void{ 
      if(isLoad) stream.readBytes(data,data.length); 
    } 

    //清除数据 
    public function close():void{ 
      if(isLoad) stream.close(); 
      stream = null; 
      data = null; 
    } 

    //获取是否有数据在加载 
    public function get isLoad():Boolean{ 
      if(stream == null) return false; 
      return stream.connected; 
    } 
  } 

更多精彩内容其他人还在看

AS3 中的package(包)应用实例代码

初学者在学习AS3时会遇到什么样的问题呢?只有从初学的角度来实践,才能知道,package 这个高手们必玩的内容,对初学者来说或许就有一些困惑。
收藏 0 赞 0 分享

swfupload使用代码说明

终于在天哪joyous的帮助下,花了一天的时间,搞明白大部分内容. swfupload(以下简称su)遇到的主要问题就是,版本不同造成的极大差异, 现在的版本已经到2.1beta。我用的是2.02版,天哪用的是1.xx版。
收藏 0 赞 0 分享

Flex中最好的MVC框架Mate框架

个人感觉Mate框架非常适合开发一般运用程序,可以提高开发效率,节约成本,同时也比较好维护。但如果要做游戏或是其它控制更强的程序并不适合。
收藏 0 赞 0 分享

Flex 创建复数行文本内容的List

效果不错的flex多行文本
收藏 0 赞 0 分享

flash/flex/air的一个大问题

Close Advertisement 对HTML标签的支持得不够好。现在普遍的做法是浮一个iframe。
收藏 0 赞 0 分享

flex编程动态生成图像

程序需求:动态生成柱形图,柱形条数不确定,柱形字段不确定
收藏 0 赞 0 分享

帮助你学习 Flash / ActionScript的12个网站

Adobe Flash是一个很好的技术,该技术允许开发人员加入的互动性和平稳的动画网页。 其受欢迎程度是如此巨大,您可以看到许多网站,致力于帮助开发者有兴趣在闪光。
收藏 0 赞 0 分享

入门简单的FLEX验证码一例

入门简单的FLEX验证码一例
收藏 0 赞 0 分享

ActionScript3禁止构造请求标头Referer

ActionScript3禁止构造请求标头Referer
收藏 0 赞 0 分享

做了一个flash视频墙[附源文件与xml文件]

这篇文章主要介绍了做了一个flash视频墙[附源文件与xml文件]
收藏 0 赞 0 分享
查看更多