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

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

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

(1) Loader 
Loader
类可用于加载 SWF 文件或图像(JPGPNG 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.0MovieClip loadMovie 功能,用于加载外部的图片和SWF文件。

如果加载图片文件(jpggifpng等)时,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. }  

 

热门文章推荐

请稍候...

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

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