AS3自写类整理笔记:ByteLoader类

所属分类: 网页制作 / Flash 阅读数: 2092
收藏 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中的反射(速记) 分析

详细了解AS3的反射,请google相关文章,这里只是速记一下
收藏 0 赞 0 分享

flash与asp/php/asp.net通信的方法第1/3页

flash与后台程序通信
收藏 0 赞 0 分享

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

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

AS打造的复制粘贴等功能类

真不错漂亮大方的flash复制粘贴剪切等效果
收藏 0 赞 0 分享

关于类、私有属性与继承的理解

学习FLASH的时间也不短了,但总觉得还有很多的东西在等我去弄清楚。而且有很多东西也是搞得似懂非懂。在这里,把类、私有属性跟继承的理解讲一下。也希望大家能无私补充,以臻佳景。
收藏 0 赞 0 分享

FLASH自动判断域名然后转向等操作

FLASH自动判断域名,如果不是你的域名,然后干什么你来定吧! 首先说一下FLASH自已可以干什么!FLASH他可以判断自已在哪个路径下面,例如:
收藏 0 赞 0 分享

Flex程序开发心得小结

和Flash的开发环境相比,Flex提供的组件库确实很诱人,但由于功能太全面,导致程序的体积大,有时候使用不当,可能会影响程序运行效率。
收藏 0 赞 0 分享

关于FLASH与XML交互应用中的理解

关于XML在FLASH中的应用,以前写过几篇。也收集了几篇来自网络的。不过,都是一些非常简单而常用的。在这里,我把XML的其他相关说明总结一下。有不足之处,希望大家能相互补充。只为了一个共同的目的:共同提高。
收藏 0 赞 0 分享

Flash Event写法

flash下event事件驱动方法
收藏 0 赞 0 分享

AS3自写类整理笔记 ClassLoader类第1/2页

在用flash做项目的时候,把一些元件,通过设置链接类,然后使用这个类,通过getClass方法即可把这个素材拿下来
收藏 0 赞 0 分享
查看更多