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

[AS3]as3加载文件时URLLoader和URLStream有什么不同

时间:2016-10-18 18:02酷播
[AS3]as3加载文件时URLLoader和URLStream有什么不同,Loader,URLLoader,URLStream使用方面的区别

(1) Loader 
Loader
类可用于加载 SWF 文件或图像(JPG、PNG 或 GIF)文件。 使用 load() 方法来启动加载。 被加载的显示对象将作为 Loader 对 象的子级添加。 

(2) URLLoader 
URLLoader
类以文本、二进制数据或 URL 编码变量的形式从 URL 下载数据。 在下载文本文件、XML 或其它用于动态数据驱动应用程序的 信息时,它很有用。 
URLLoader
对象会先从 URL 中下载所有数据,然后才将数据用于 ActionScript。 它会发出有关下载进度的通知,通过 bytesLoaded 和 bytesTotal 属性以及已调度的事件,可以监视下载进度。 
在加载非常大的视频文件(如 FLV 的视频文件)时,可能会出现内存不足错误。 

(3) URLStream
URLStream
类提供对下载 URL 的低级访问。 数据一下载,便可随即为应用程序使用,这和使用 URLLoader 时需要等到整个文件下载完不 同。并且 URLStream 类还允许在完成下载前关闭流。 已下载文件的内容将作为原始二进制数据提供。 在 URLStream 中的读取操作是非阻塞模式的。 这意味着您在读取数据之前必须使用 bytesAvailable 属性来确定是否能够获得足够的数据 。 如果不能获得足够的数据,将引发 EOFError 异常。 
在默认情况下,所有二进制数据都是以 Big-endian 格式编码的,并且最高位字节于第一位。

(1)Loader
Loader
像2.0中MovieClip 的loadMovie 功能,用于加载外部的图片和SWF文件。

如果加载图片文件(jpg,gif,png等)时,Loader.content 得到数据类型是Bitmap 对象;
如果加载SWF文件(flash 9 版本)时,Loader.content 得到数据类型是MovieClip 对象;
如果加载SWF文件(flash 9 以前版本) 时, Loader.content 得到数据类型是AVM1Movie 对象;

(2)URLLoader

(3)URLStream

下面一个实例将被加载的配置文件以二进制数据读取 ,这可以解决很多问题,比如对不同格式配置文件进行的处理

  1.  package    
  2. {    
  3. import flash.display.Sprite;    
  4. import flash.events.Event;    
  5. import flash.net.URLRequest;    
  6. import flash.net.URLStream;    
  7. import flash.net.URLLoader;    
  8. import flash.utils.ByteArray;    
  9. import flash.net.URLLoaderDataFormat;    
  10. public class Test extends Sprite    
  11. {    
  12. public function Test()    
  13. {    
  14. //testURLLoader();    
  15. testURLStream();    
  16. }    
  17. private function testURLLoader():void    
  18. {    
  19. var urlLoader:URLLoader = new URLLoader();    
  20. urlLoader.dataFormat = URLLoaderDataFormat.BINARY;//原始二进制数据    
  21. urlLoader.addEventListener(Event.COMPLETE, completeHandler);    
  22. urlLoader.load(new URLRequest(“02.xml”));    
  23. }    
  24. private function completeHandler(event:Event):void    
  25. {    
  26. trace(“配置文件是ANSI :” + event.target.data);// 如果配置文件是ANSI等,会出现中文字乱码    
  27. //URLLoader如果遇到乱码,则可以转换(利用标准的xml格式Excle可以解决乱码问题就是基于这里):    
  28. var _byteArray:ByteArray = new ByteArray;    
  29. _byteArray.writeBytes(event.target.data);    
  30. _byteArray.position = 0;    
  31. //如果是xml文档    
  32. var xml:XML = XML(_byteArray.readMultiByte(_byteArray.length, ”chinese”));//简体中文 (GB2312)    
  33. trace(xml);    
  34. }    
  35. private function testURLStream():void    
  36. {    
  37. var stream:URLStream = new URLStream();    
  38. stream.addEventListener(Event.COMPLETE, complete);    
  39. stream.load(new URLRequest(“02.xml”));    
  40. }    
  41. private function complete (event:Event):void    
  42. {    
  43. var stream:URLStream = event.target as URLStream;    
  44. var xml:XML = XML(stream.readMultiByte(stream.bytesAvailable, ”chinese”));//酷播cuplayer.com提示简体中文 (GB2312)    
  45. trace(xml);    
  46. }    
  47. }    
  48. }  

 

热门文章推荐

请稍候...

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

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