前面学习了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(""); il.addEventListener(Event.COMPLETE,fun); function fun(e:Event){ addChild(new Bitmap(il.data)); trace(il.loader) trace(il.url) }
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; } } }