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的后缀,但是也要加参数哦。










本文转自 windtoto 51CTO博客,原文链接:http://blog.51cto.com/windtoto/403919,如需转载请自行联系原作者
目录
相关文章
|
JavaScript 前端开发 Unix
webpack原理篇(五十九):loader 的链式调用与执行顺序
webpack原理篇(五十九):loader 的链式调用与执行顺序
291 0
webpack原理篇(五十九):loader 的链式调用与执行顺序
|
测试技术 数据库 Python
python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)
大多数的初学者在使用 unittest 框架时候,不清楚用例的执行顺序到底是怎样的。对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行。虽然或许通过代码实现了,也是稀里糊涂的一知半解,这样还好,好歹自己鼓 捣出了,但是时间和效率并不是很高,下次遇到还是老样子。那么本篇通过最简单案例来给给为小伙伴详细讲解、演示一下 unittest 执行顺序。
267 0
python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)
|
缓存 JavaScript 开发者
require 函数加载模块原理(被加载的模块会先执行一次)|学习笔记
快速学习 require 函数加载模块原理(被加载的模块会先执行一次)
require 函数加载模块原理(被加载的模块会先执行一次)|学习笔记
|
PHP
ThinkPHP自动加载Loader源码分析(3)
ThinkPHP自动加载Loader源码分析
333 0
ThinkPHP自动加载Loader源码分析(3)
|
PHP
ThinkPHP自动加载Loader源码分析(4)
ThinkPHP自动加载Loader源码分析
140 0
ThinkPHP自动加载Loader源码分析(4)
|
PHP
ThinkPHP自动加载Loader源码分析(1)
ThinkPHP自动加载Loader源码分析
169 0
ThinkPHP自动加载Loader源码分析(1)
|
PHP
ThinkPHP自动加载Loader源码分析(2)
ThinkPHP自动加载Loader源码分析
164 0
ThinkPHP自动加载Loader源码分析(2)
|
PHP
laravel加载样式文件
laravel加载样式文件
123 0
|
XML 程序员 C语言
Qt编写控件属性设计器1-加载插件
一、前言 加载插件是整个属性设计器的第一步要打通的功能,插件中的控件都加载不了,后面就别搞别玩下去了没法玩的,要从一个动态库中加载出来控件,肯定需要用到反射机制,以前做.NET开发的时候就觉得反射这个东西相当强大,居然可以读取DLL加载出来控件,现在用Qt,发现Qt也有反射机制,也许这东东可能各大.
1039 0
|
分布式计算 Java 开发工具
Spark2.1.0之代码结构及载入Ecplise方法
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/beliefer/article/details/79688675          本文旨在帮助那些想要对Spark有更深入了解的工程师们,了解Spark源码的概况,搭建Spark源码阅读环境,编译、调试Spark源码,为将来更深入地学习打下基础。
1510 0