AS3自写类整理笔记:ByteLoader类

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; 
    } 
  } 
}

(0)

相关推荐

  • AS3自写类整理笔记:ByteLoader类

    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 关闭方

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

    主要用途: 1.在用flash做项目的时候,把一些元件,通过设置链接类,然后使用这个类,通过getClass方法即可把这个素材拿下来 图1(详见例1) 2.将许多许多的类分库到不同的swf中,然后通过调用swf,达到调用类库的功能,然后通过getClass来获取类(详见例2) index.base.net.ClassLoader类讲解:加载swf文件,并且通过调用getClass获取类,也可以获取命名空间或者函数的定义 构造函数public function ClassLoader(obj:Ob

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

    /upload/20080604194652471.swf构造函数 public function Dot(x_:Number = 0,y_:Number = 0,_isListen:Boolean = false) 前两个参数表示Dot的初始位置,第三个参数表示是否是一个功能性强的点 如果为false,当xy发生改变的时候,就不会发布事件,为true则会发布事件. bind 绑定显示对象方法 public function bind(_dis:DisplayObject,isInTime:Bo

  • Three.js源码阅读笔记(Object3D类)

    这是Three.js源码阅读笔记的第二篇,直接开始. Core::Object3D Object3D似乎是Three.js框架中最重要的类,相当一部分其他的类都是继承自Object3D类,比如场景类.几何形体类.相机类.光照类等等:他们都是3D空间中的对象,所以称为Object3D类.Object3D构造函数如下: 复制代码 代码如下: THREE.Object3D = function () { THREE.Object3DLibrary.push( this ); this.id = THR

  • 专为新手写的结合smarty的类第1/3页

    专为新手写的结合smarty的类,诚挚邀请大家多提宝贵意见 这个是为新手(也为自己)写的结合smarty一起使用的类,是未完成的,现在放出来的目的不是马上让新手使用,所以也没有把注解写的非常详细 希望各位高手多多提意见,我尽量完善它.     首先声明,我写这个的目的也是为了锻炼自己,尽管我知道现在已经有很多类似的类了,但是我还是决定来写一个, 所以请大家在浏览的时候口下留情. 还有文件我也已经打包上传了,放在下面,请大家多多下载,多多提意见.有什么问题直接Q我 目前该类包括以下功能(使用范例,

  • c# 编写一个轻量级的异步写日志的实用工具类(LogAsyncWriter)

    一说到写日志,大家可能推荐一堆的开源日志框架,如:Log4Net.NLog,这些日志框架确实也不错,比较强大也比较灵活,但也正因为又强大又灵活,导致我们使用他们时需要引用一些DLL,同时还要学习各种用法及配置文件,这对于有些小工具.小程序.小网站来说,有点"杀鸡焉俺用牛刀"的感觉,而且如果对这些日志框架不了解,可能输出来的日志性能或效果未毕是与自己所想的,鉴于这几个原因,我自己重复造轮子,编写了一个轻量级的异步写日志的实用工具类(LogAsyncWriter),这个类还是比较简单的,实

  • 聊聊@Autowired注解注入,写接口名字还是实现类的名字

    目录 用@Autowired注解注入,写接口名字还是实现类的名字 来自某程序员一个问答问题 Spring中Autowired注入接口的几个问题 1.Spring怎么知道注入哪个实现? 2.需要@Qualifier和@Resource注解吗? 3.为什么@Autowired使用在interface上而不是实现类上? 用@Autowired注解注入,写接口名字还是实现类的名字 来自某程序员一个问答问题 1. 有一点没明白,为什么注解@repository注解的是接口UserDAO的实现类UserDA

  • 整合了前面的PHP数据库连接类~~做成一个分页类!

    不知道学PHP有没有前途~哎越写越没劲 <?php  Class createdb    //类的开始  {  var $db= "localhost";//数据库地址;  var $dbname = "root";//用户名;  var $dbpwd = "";//密码;  var $dbtable = "mysql";//使用的数据库  var $conn;    //数据库连接;  var $result;    

  • asp知识整理笔记4(问答模式)

    继前几篇篇<asp知识整理笔记1>和<asp知识整理笔记2>,<asp知识整理笔记3>新鲜出炉: 23.问题:在ASP文件中读取HTML的表单字段有几种方法? 答:Request对象除了可以用来读取附带在网址后面的参数以外,也可以读取HTML表单字段的内容,经常使用的语法结构如下: < Form name =Formname method="Get|Post"Action="URL">< Form > 其中

  • asp知识整理笔记3(问答模式)

    继上两篇<asp知识整理笔记1>和<asp知识整理笔记2>,<asp知识整理笔记3>新鲜出炉: 17.问题:在ASP中使用ADO的AddNew方法和直接使用"Insert into..."语句有何不同?哪种方式更好? 答:ADO的AddNew方法只是将"Insert into "语句封装了起来,所以,当对大量数据进行操作的时候,直接使用SQL语句将会大大加快存取数据的速度,因为它减少了ADO的"翻译"时间,由于

随机推荐