·您当前的位置:首页 > 技术教程 > Flex技术 >

[Flex]Flex中URLLoader加载xml文件和图片文件的代码示例

时间:2012-10-09 18:59CuPlayer
面这段代码的作用是 再不知道返回的是什么的时候。我们先把URLLoader请求到的进制数据通过ByteArray 转为字符串,进行判断类型

在项目遇到的问题,再不知道通过连接将请求到什么数据的时候,我们该如何处理,如果是图片如何只通过这一次请求,而不需要再去通过image.source=url请求。

下面示例中利用二进制形式转码赋予Image。

 下面这段代码的作用是 再不知道返回的是什么的时候。我们先把URLLoader请求到的进制数据通过ByteArray 转为字符串,进行判断类型。

  1. private function onImageLoaded(e:Event):void {  
  2. var _ba:ByteArray = e.target.data as ByteArray;  
  3. var des:String = _ba.readMultiByte(_ba.length, "GBK");  
  4. switch(des.charAt(0)){  
  5. case "<":   
  6. areaShow(des);  
  7. case "{":  
  8. areaShow(des);   
  9. case "":  
  10. areaShow(des); //酷播CuPlayer.com提示:上面这三种就可以知道

    //是XML、或者JSON 等字符形式的。  
  11. break;  
  12. default:   
  13. byteToImage(_ba); //酷播CuPlayer.com提示:这里就能知道请求到

    //的是图片。把ByteArray传递给方法,下面主要展示图片,xml.json就不多说了。  
  14. break;  
  15. }  
  16. }  

这里就是利用urlloader以二进制的方式先加载图片。然后在用loader加载byteArray。得到的loader.content其实就已经是bitmap了。

如果是单纯的图片(如PNG)直接用URLLoader就搞定了,没必要这么麻烦,如果是gif图片那么就得使用loader这个方法的基础上解码了.

  1. private function byteToImage(_ba:ByteArray):void{  
  2. var _l:Loader = new Loader;  
  3. _l.contentLoaderInfo.addEventListener (Event.COMPLETE, imageCompleteHandler);  
  4. _l.loadBytes(_ba);  
  5. loader.removeEventListener(Event.COMPLETE,onImageLoaded);  
  6. loader = null;  
  7. }  

进行解码之后e.currentTarget.content就直接是 bitmap了,让它赋给图片就行了。

  1. private function imageCompleteHandler(e:Event):void{  
  2. var img:Image=new Image();  
  3. // img.addChild(e.currentTarget.content);  
  4. img.source=e.currentTarget.content;  

 

热门文章推荐

请稍候...

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

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