AS3.0中的显示编程(五)-- Loader(加载器)

      Loader类是一个显示容器,可用来加载SWF文件或图像(JPG、GIF、PNG),被加载的显示对象将做为Loader对象的子级添加。使用Loader类时,不可避免的要注意安全模型。但这块内容我会集中在一起讲解,所以这里就不做介绍了。

      使用Loader加载的基本代码如下:

      var loader:Loader = new Loader(); //注册加载器

      var url:URLRequest = new URLRequest("1.jpg"); //注册加载地址

      loader.load(url);

      addChild(loader);

 

      AS3.0和AS2.0的加载相比,有一个蛮大的区别,就是采用了URLRequest类来传递Http请求中所需要提供的信息数据。URLRequest最简单的用法,就是直接提供一个以字符串形式表现的url地址。更具体的用法由于Loader类不需要,这里就先不讲了。

      文件加载了之后,我们可能要对该文件做一定处理,比如获取文件加载进度等,这时候需要用到loaderInfo对象。该对象在文件开始加载后,就自动创建了。事实上,从加载一开始,就可以通过Loader对象的contentLoaderInfo属性访问loaderInfo对象了。而加载完成后,显示对象的loaderInfo属性和Loader对象的contentLoaderInfo属性是完全相同的。

      要访问加载的内容的属性,需要在Loader对象中添加事件侦听器,代码如下:

      var loader:Loader = new Loader();

      var url:URLRequest = new URLRequest("1.jpg");

      loader.load(url);

      addChild(loader);

      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadfunc);

      function loadfunc(event:Event) {

            var cont:Bitmap = event.target.content;

            trace(cont.loaderInfo.bytesTotal);

            trace(loader.contentLoaderInfo.bytesTotal);

      }

 

      下面我简单介绍下loaderInfo对象的常用属性:

     (1)actionScriptVersion、swfVersion

      actionScriptVersion返回被加载的SWF文件的AS版本。如果是AS1.0或者AS2.0返回值2,如果是AS3.0,返回值3。

      swfVersion返回被加载的SWF文件的格式版本,如果返回8就代表是Flash8,如果返回9就代表是Flash9,依次类推。

 

      (2)bytesLoaded、bytesTotal

      被加载的文件已经加载的字节数和总字节数。这两个属性经常用来制做简单的加载进度条。

 

      (3)width、height

      返回被加载文件的宽、高值。如果是一个swf文件,返回的是该swf文件舞台的宽高值(这个属性在AS2.0中,Flash几乎是无法获取的。一般是通过JS读取并解析SWF文件头的方式获取,然后传递给Flash)。

      这里我着重说明一下。假如我们的主文件舞台是500x400,加载一个外部swf文件后,一般情况下,是需要将外部swf文件做比例适配的。然后我们比较下面一段代码:

      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
      function loadComplete(event:Event):void {
              var t_info:LoaderInfo = loader.contentLoaderInfo;
              trace(t_info.width);
              trace(t_info.height);
 
              var obj = event.target.content;
              trace(obj.width);
              trace(obj.height);
      }

      上面的2个trace,和下面的2个trace,区别在哪呢?

      答案就是:上面返回的宽和高,是加载的外部swf文件舞台的宽和高。而下面返回的宽和高,是外部swf文件中,元素的宽和高。由于width属性是loaderInfo对象和显示对象通有的属性,所以这里很容易搞混,大家请细致比较一下区别。

 

       (4)url、loaderURL

      url返回的是被加载文件的URL绝对地址。

      loaderURL返回的是加载文件的URL绝对地址。

 

     (5)parameters

      在AS2.0中,我们调用Flash的时候,经常用以下的方式传递参数,如:demo.swf?parm1=5,然后用_root.parm1的方式获取参数值。但在AS3.0里,这样已经不行了。在AS3.0里要获取参数值,需要用到parameters属性,方法如下:

      var param:Object = this.loaderInfo.parameters;

      trace(param.parm1);

      对了,html里,有个AC_FL_RunContent的JS,里面的'movie','flash名字',这里的flash名字虽然没有swf的后缀,但是也要加参数哦。

你可能感兴趣的:(加载,AS,loader,休闲,显示编程)