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

ActionScript
Flash AS实例:制作切换菜单动画
Flash AS3实例教程:简单的转动的星星
Flash AS3实例教程:制作旋转的菜单动画
项目中使用发布swc时遇到两个问题
Flash AS3教程:随图片大小而动态改变的图框
Flash AS3教程:创建好看的遮罩动画效果
Flash AS3.0教程:制作老鹰飞动实例
Flash as入门(6):文本与字符串
Flash as入门(8):加载和卸载swf文件
Flash as入门(17):Math类三角函数
Flash AS3实例教程:连锁反应的粒子动画
AS3实例教程:结合基本的动画和AS3绘图API
学习AS3知识:常用的8个AS3小技巧
Flash AS3实例教程:漂亮的水纹动画
Flash AS3实现动画中音乐音量逐渐关闭
AS 3.0的TransitionManager类制作动画
AS3实例教程:制作数码下落的动画特效
AS3面试题:复杂算法的改进
AS3.0实例:鼠标感应发光的文字效果
Flex4教程:添加事件的3种方法

ActionScript 中的 Flash AS3教程:ImageLoader类


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-16   浏览: 81 ::
收藏到网摘: 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;
      }
  }
}