2016-10-13 00:16:48 点击量:13 标签: 收藏本文
在项目遇到的问题,再不知道通过连接将请求到什么数据的时候,我们该如何处理,如果是图片如何只通过这一次请求,而不需要再去通过image.source=url请求。
下面示例中利用二进制形式转码赋予Image。
下面这段代码的作用是 再不知道返回的是什么的时候。我们先把URLLoader请求到的进制数据通过ByteArray 转为字符串,进行判断类型。
- private function onImageLoaded(e:Event):void {
- var _ba:ByteArray = e.target.data as ByteArray;
- var des:String = _ba.readMultiByte(_ba.length, "GBK");
- switch(des.charAt(0)){
- case "<":
- areaShow(des);
- case "{":
- areaShow(des);
- case "":
- areaShow(des); //酷播CuPlayer.com提示:上面这三种就可以知道
//是XML、或者JSON 等字符形式的。- break;
- default:
- byteToImage(_ba); //酷播CuPlayer.com提示:这里就能知道请求到
//的是图片。把ByteArray传递给方法,下面主要展示图片,xml.json就不多说了。- break;
- }
- }
- }
这里就是利用urlloader以二进制的方式先加载图片。然后在用loader加载byteArray。得到的loader.content其实就已经是bitmap了。
如果是单纯的图片(如PNG)直接用URLLoader就搞定了,没必要这么麻烦,如果是gif图片那么就得使用loader这个方法的基础上解码了.
- private function byteToImage(_ba:ByteArray):void{
- var _l:Loader = new Loader;
- _l.contentLoaderInfo.addEventListener (Event.COMPLETE, imageCompleteHandler);
- _l.loadBytes(_ba);
- loader.removeEventListener(Event.COMPLETE,onImageLoaded);
- loader = null;
- }
进行解码之后e.currentTarget.content就直接是 bitmap了,让它赋给图片就行了。
- private function imageCompleteHandler(e:Event):void{
- var img:Image=new Image();
- // img.addChild(e.currentTarget.content);
- img.source=e.currentTarget.content;
- }
我们是一家提供综合软件外包与弱电工程服务的技术公司。
业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。
公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室