http://windtoto.blog.51cto.com/1986737/403919
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://windtoto.blog.51cto.com/1986737/403919
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的后缀,但是也要加参数哦。
本文出自 “寂寞风之谷” 博客,请务必保留此出处http://windtoto.blog.51cto.com/1986737/403919