·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]As3写的loading(加载文件)监听源代码示例

时间:2013-07-19 10:35flox.cn
采用as来加载,一般会有两种方式,一种是加载自身,一种是加载外部的某个对象。As3中的加载都是通过flash.display.Loader 对象来完成的。在加载的过程中

  采用as来加载,一般会有两种方式,一种是加载自身,一种是加载外部的某个对象。As3中的加载都是通过flash.display.Loader 对象来完成的。在加载的过程中,我们可以通过ProgressEvent.PROGRESS或者Event.INIT事件来监视加载进度,在加载完成时可 以调度Event. COMPLETE事件,执行所需要的任务。实际上,以上提到的事件,只是加载的状态。加载的具体数据会被放入 flash.display.LoaderInfo对象中,我们可以通过访问这个对象中的内容得到我们所需要的具体数据。

使用As3加载自身的方法如下:

  1. root.loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler); 
  2. root.loaderInfo.addEventListener(Event.COMPLETE, completeHandler); 
  3. function progressHandler (event:ProgressEvent):void { 
  4. trace(“Loading: “+Math.round(event.bytesLoaded/event.bytesTotal * 100)+”%”); 
  5. function completeHandler (event:Event):void { 
  6. root.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressHandler); 
  7. nextFrame(); 

  对于root,flash会自动加载,无需自己去创建loader对象。其中event.bytesLoaded是已加载的字 节,event.bytesTotal是swf文件的总大小。这些信息都被放在了loaderInfo对象中,可以通过 ProgressEvent.PROGRESS事件来调用。当加载完成时Event.COMPLETE触发,移除对 ProgressEvent.PROGRESS事件的监听。

  对于刚开始接触flash的人,需要注意的是:在为自身加载loading的时候,第一帧上需要尽可能的少放东西。而且要在第一针的第一句上加上
stop();
flash的处理机制是完整的加载完这一帧的全部内容后,才去处理as的内容。如果第一帧放的东西过多,处理加载的as就会在很久以后才开始工作,很大程度上就失去使用loading的意义了。库中的元素如果有选择在第一帧导出的话,也会有这样的问题。需要注意。

  加载外部的元素,和自身的加载方法,思路上是一致的,只需要创建一个loader来加载即可。

  1. var request:URLRequest = new URLRequest(“test.png”); 
  2. var loader:Loader = new Loader(); 
  3.  
  4. loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler); 
  5. loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); 
  6.  
  7. function progressHandler(event:ProgressEvent):void { 
  8. trace(“Loading: “+Math.round(event.bytesLoaded/event.bytesTotal * 100)+”%”); 
  9. function completeHandler(event:Event):void { 
  10. loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressHandler); 
  11. addChild(loader); 
  12.  
  13. loader.load(request); 

  稍有不同的是与加载相关的事件由 Loader 对象的 contentLoaderInfo 属性引用的 LoaderInfo 对象调度。 contentLoaderInfo 属性设置为有效的 LoaderInfo 对象(即使在加载内容之前),这样就可以在加载前将事件侦听器添加到该对象。加载完成后即可对加载的对象引用和操作了。

  关于加载过程中的调试,flash的帮助文档有详细的介绍,现转帖此处,以供参考。

  测试文档的下载性能

  Flash Player 会尝试满足您设置的帧频;播放期间的实际帧频可能会因计算机而异。 如果正在下载的文档到达了某个特定的帧,但是该帧的所需数据尚未下载,则文档会暂停,直到数据到达为止。
要以图形化方式查看下载性能,可以使用“带宽设置”,它会根据指定的调制解调器速度显示为每个帧发送了多少数据。
在模拟下载速度时,Flash 使用典型 Internet 性能的估计值,而不是精确的调制解调器速度。 例如,如果您选择模拟 28.8 Kbps 的调制解调器速度,Flash 会将实际速率设置为 2.3 Kbps 以反映典型的 Internet 性能。 “带宽设置”还针对 SWF 文件新增的压缩支持进行补偿,从而减少了文件大小并改善了数据流性能。
当外部 SWF 文件、GIF 和 XML 文件以及变量通过使用 ActionScript 调用(如 loadMovie 和 getUrl)流入播放器时,数据将按为数据流设置的速率流动。 在带宽由于出现其它数据请求而减少时,主要 SWF 文件的流速率也会随之降低。 请您计划支持的计算机上以支持的各种速度测试文档,确保文档在设计支持的最慢连接和计算机上都不会出现过载情况。
也可以生成降低回放速度的帧的报告,然后优化或删除这些帧中的某些内容。
要更改使用“测试影片”和“测试场景”命令创建的 SWF 文件的设置,请使用“文件”>“发布设置”。

测试下载性能
1. 请执行下列操作之一:
选择“控制”>“测试场景”或“控制”>“测试影片”。
如果测试场景或文档,Flash 会使用“发布设置”对话框中的设置将当前所选内容发布为 SWF 文件。 SWF 文件会在一个新窗口中打开,并立即开始播放。
选择“文件”>“打开”,然后选择一个 SWF 文件。
2. 选择“视图”>“下载设置”,然后选择一个下载速度来确定 Flash 模拟的数据流速率。 若要输入自定义用户设置,请选择“自定义”。
3. 查看 SWF 文件时,选择“视图”>“带宽设置”,可显示下载性能图表。
“带宽设置”的左侧会显示文档的相关信息、文档设置、文档状态以及流(如果文档中已包括的话)。
“带宽设置”的右侧显示时间轴标题和图表。 在该图表中,每个条形代表文档的一个单独帧。 条形的大小对应于帧的大小(以字节为单位)。 时间轴标题下面的红线指出,在当前的调制解调器速度(在“控制”菜单中设置)下,指定的帧能否实时流动。 如果某个条形伸出到红线之上,则文档必须等待该帧加载。
4. 选择“视图”>“模拟下载”以打开或关闭数据流。
如果关闭数据流,则文档在不模拟 Web 连接的情况下就开始下载。
5. 单击图表上的条形,会在左侧窗口中显示对应帧的设置并停止文档下载。
6. 如有必要,执行以下操作之一,调整图形视图:
选择“视图”>“数据流图表”以显示哪些帧会引起暂停。
默认视图显示交替的淡灰色和深灰色块,代表各个帧。 每块的旁边指出了它的相对字节大小。 第一个帧存储元件的内容,因此它通常大于其它帧。
选择“视图”>“逐帧图表”以显示每个帧的大小。
此视图有助于您查看哪些帧导致数据流延迟。 如有帧块延伸到图表红线之上,Flash Player 将暂停回放,直到整个帧下载完毕。
7. 关闭测试窗口,返回创作环境。
使用“带宽设置”设置测试环境后,就可以直接在测试环境中打开所有 SWF 文件。 文件在 Flash Player 窗口中打开,且在打开时会使用“带宽设置”和其它选定的查看选项。

生成最终报告
1. 选择“文件”>“发布设置”,然后单击“Flash”选项卡。
2. 选择“生成大小报告”。
3. 单击“发布”。
Flash 生成一个扩展名为 .txt 的文本文件。 (如果文档文件为 myMovie.fla,则文本文件为 myMovie Report.txt。) 报告会逐帧列出各帧的大小、形状、文本、声音、视频和 ActionScript 脚本。

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器