欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Flash AS3教程:ImageLoader类

程序员文章站 2023-11-03 20:51:52
前面学习了Flash AS3教程:ClassLoader类和BitmapData的使用。 跟ClassLoader差不多,但是不同的是,他是读取图片的BitmapData,然后可以多次 new Bitamap(ImagesLoader.data) 进... 08-10-06...
前面学习了flash as3教程:classloader类和bitmapdata的使用。
跟classloader差不多,但是不同的是,他是读取图片的bitmapdata,然后可以多次
new bitamap(imagesloader.data)
进行图片调用

多次使用图片,直接用byteloader也可以,但是他加载进来的是字节,还要通过loadbytes
但是加载进来的,却是一张图片,无法重复使用
虽说要用就loadbytes一下,就是一张图片,但是实际起来还是比较麻烦
那么这个类,就是帮助你把这些步骤全部省下,直接把bitmapdata拿出来
你只需要,用一个引用值接住他
var bd:bitmapdata = imageloader.data;
然后每次使用这张图片的时候
new bitamap(imagesloader.data)
就行了

该类的具体用法就不详讲了,前面加过的classloader类,在这个类里面都有,而且两个类连代码都没改什么。。
就是少了getclass,hasclass,而多了data属性。相信应该不是很难看懂

示例:

code:
import index.base.net.imageloader;

var il:imageloader = new imageloader;

il.load("http://www.xiaos8.com/uploads/200804/02_230327_1.jpg");

il.addeventlistener(event.complete,fun);

function fun(e:event){
addchild(new bitmap(il.data));
trace(il.loader)
trace(il.url)
}
源代码:

code:
package index.base.net{

import flash.display.loader;
import flash.display.bitmapdata;
import flash.net.urlrequest;
import flash.utils.bytearray;
import flash.events.event;
import flash.events.progressevent;
import flash.events.eventdispatcher;
import flash.system.loadercontext;

public class imageloader extends eventdispatcher{

public var url:string;
public var loader:loader;
public var data:bitmapdata;

//构造函数
public function imageloader(obj:object = null,lc:loadercontext = null) {
if(obj != null){
if(obj is bytearray){
loadbytes(obj as bytearray,lc);
}else if(obj is string){
load(obj as string,lc);
}else{
throw new error("参数错误,构造函数第一参数只接受bytearray或string");
}
}
}

//加载
public function load(_url:string,lc:loadercontext = null):void{
url = _url;
loader = new loader;
loader.load(new urlrequest(url),lc);
addevent();
}

//加载字节
public function loadbytes(bytes:bytearray,lc:loadercontext = null):void{
loader = new loader;
loader.loadbytes(bytes,lc);
addevent();
}

//开始侦听
private function addevent():void{
loader.contentloaderinfo.addeventlistener(progressevent.progress,progressfun);
loader.contentloaderinfo.addeventlistener(event.complete,completefun);
}

//结束侦听
private function delevent():void{
loader.contentloaderinfo.removeeventlistener(progressevent.progress,progressfun);
loader.contentloaderinfo.removeeventlistener(event.complete,completefun);
}

//加载成功,发布成功事件
private function completefun(e:event):void {
data = loader.content["bitmapdata"];
delevent();
dispatchevent(e);
}

//加载过程
private function progressfun(e:progressevent):void{
dispatchevent(e);
}

//清除
public function clear():void{
loader.unload();
loader = null;
data = null;
}
}
}