AS3自写类整理笔记:ByteLoader类

 更新时间:2008年06月04日 19:43:07   作者:  
该类的主要功能是把swf,jpg,png,gif等文件以字节的形式加载进来 以便于使用Loader.loadBytes方法,重复加载使用素材 如果图片格式为jpg,并且是渐进式格式jpeg,那么该类还可以帮助你边加载边显示
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.0 xml + Loader应用代码

    As3.0 xml + Loader应用代码

    简单说说AS3.0中对于XML支持的不同吧: .AS2.0对XML的支持勉勉强强,将就着可以用。而AS3.0中对XML的支持是全方位的,极其强大和灵活的
    2008-03-03
  • AS3 navigateToURL导致ExternalInterface 执行失败问题

    AS3 navigateToURL导致ExternalInterface 执行失败问题

    AS3 navigateToURL导致ExternalInterface 执行失败问题
    2009-02-02
  • 编写高效率的AS3代码的小技巧

    编写高效率的AS3代码的小技巧

    最近我研究了一些AS3代码优化的文章,一般都是集中在研究loops 和 Number types上的,本文不在重复类似的测试
    2009-02-02
  • Actionscript 3.0 鼠标事件

    Actionscript 3.0 鼠标事件

    这本书是一本经典的书籍,说实话一些小的AS3的项目是做了好几个,基本的语法也都知道(其实有面向对象编程语言的基础后再入门一门新的语言还是很快的)。现在找到了这边经典书籍完整版,就好好看看,顺便写一些总结。
    2009-02-02
  • AS3打开新窗口不被屏蔽的代码

    AS3打开新窗口不被屏蔽的代码

    有时候flash打开的网址会出现被屏蔽的现象,如何能轻松的打开而不被屏蔽呢,下面是具体的代码。
    2010-08-08
  • flash PureMVC 使用例子

    flash PureMVC 使用例子

    昨天下了PureMVC, 看了一天文档, 迷茫啊, 找例子也没找到, 后来破解了一个看了一下, 大概地写了一个简单的用例, 先算是学习笔记吧, 先把这最简单的例子做法写一下吧( 也不知道这种理解是否正确哦~~汗一个!)
    2009-01-01
  • ActionScript 3.0 编程体验

    ActionScript 3.0 编程体验

    日前,Adobe公司发布了Flash的最新版本Flash Professional 9 ActionScript 3.0 Preview,这是Flash 9的预览版,正式版本估计要到2007年才会推出,
    2008-03-03
  • Actionscript 3.0中Singleton实现 修正篇

    Actionscript 3.0中Singleton实现 修正篇

    说明:上一篇"一个简单的Actionscript的单态模式类"的实现在Actionscript中报错,具体原因会在这篇Blog中详细说明。
    2009-02-02
  • as3 rollOver or mouseOver使用说明

    as3 rollOver or mouseOver使用说明

    rollOver与mouseOver同样在鼠标移到目标上时触发事件,细微区别在于,mouseOver的bubbles等于true,而rollOver的bubbles是false.
    2009-10-10
  • 火山动态文本滚动条V5[AS3版]

    火山动态文本滚动条V5[AS3版]

    功能说明:本版滚动条除了继续保持体积小(小于2K),界面容易修改,资源占用率小的优势外,主要有以下几点改进: 1,使用AS3编写。 2,宽高动态指定。 3,增加滚动条背景点击事件。 4,消除了鼠标滚轮无法同时准确控制多个文本框的重大BUG。
    2008-03-03

最新评论