Onelong

分享知识,与你一起进步......
RSS icon Home icon
  • Loader、URLLoader、URLStream

    post by onelong / 2010-4-1 21:57 Thursday [MXML/ActionScript3.0]

    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
    例如:

    AS3代码
    package   
    {  
        import flash.display.Sprite;  
        import flash.events.Event;  
        import flash.net.URLRequest;  
        import flash.net.URLStream;  
          
        import flash.net.URLLoader;  
        import flash.utils.ByteArray;  
        import flash.net.URLLoaderDataFormat;  
         
        public class Test extends Sprite 
        {  
              
            public function Test()   
            {  
                  
                //testURLLoader();  
                testURLStream();  
            }  
              
            private function testURLLoader():void 
            {  
                var urlLoader:URLLoader = new URLLoader();  
                urlLoader.dataFormat = URLLoaderDataFormat.BINARY;//原始二进制数据  
                urlLoader.addEventListener(Event.COMPLETE, completeHandler);  
                  
                urlLoader.load(new URLRequest("02.xml"));  
            }  
            private function completeHandler(event:Event):void 
            {  
                  
                trace("配置文件是ANSI  :" + event.target.data);// 如果配置文件是ANSI等,会出现中文字乱码  
                  
              //URLLoader如果遇到乱码,则可以转换(利用标准的xml格式Excle可以解决乱码问题就是基于这里):  
                var _byteArray:ByteArray = new ByteArray;  
                _byteArray.writeBytes(event.target.data);  
                _byteArray.position = 0;     
                  
                //如果是xml文档  
                var xml:XML = XML(_byteArray.readMultiByte(_byteArray.length, "chinese"));//简体中文 (GB2312)  
                trace(xml);  
            }  
              
              
            private function testURLStream():void 
            {  
                var stream:URLStream = new URLStream();  
                  
                stream.addEventListener(Event.COMPLETE, complete);  
                stream.load(new URLRequest("02.xml"));  
            }  
              
            private function complete (event:Event):void 
            {  
                var stream:URLStream = event.target as URLStream;  
                var xml:XML = XML(stream.readMultiByte(stream.bytesAvailable, "chinese"));//简体中文 (GB2312)  
                  
                trace(xml);  
            }      
              
        }  

    引用地址:
     

    我要评论