当前位置: 首页 > 图文教程 > Flash动画 > ActionScript > Flash AS3教程:ImageLoader类

ActionScript
FLASH 3D相册之利用BitmapData类制作
Flash 脚本游戏开发教程 第一课
Flash 脚本游戏开发教程第二课
Flash 脚本游戏开发教程第三课
Flash 脚本游戏开发教程第四课
Flash 脚本游戏开发教程第五课
Flash 脚本游戏开发教程第六课
Flash 脚本游戏开发教程第七课
Flash 脚本游戏开发教程第八课
Flash AS实现的蝌蚪摆尾动画的教程
从基础开始深入学Flash AS3教程(4)(译文)
从基础开始深入学Flash AS3教程(5)(译文)
从基础开始深入Flash AS3教程(2)(译文)
从基础开始深入学Flash AS3教程(3)(译文)
Flash AS3对单个图片进行角色动作化处理
从基础开始深入Flash AS3教程(1)(译文)
Flash教程:if条件语句的用法
Flash AS教程:_visible属性的详细讲解
Flash AS教程:图片环绕旋转效
Flash教程:trace()的使用

ActionScript 中的 Flash AS3教程:ImageLoader类


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-16   浏览: 78 ::
收藏到网摘: n/a

前面学习了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;
      }
  }
}