zoukankan      html  css  js  c++  java
  • AS3 ByteArray与URLLoader加载数据

    AS3 用UTF编码的话 最好用byteArray的 writeUTF 或者 writeUTFBytes方法

    Unicode字符集在编码汉字的时候,应该是一个汉字三个字节的

    http://happear.iteye.com/blog/714928

    ByteArray有两个函数可以转化汉字成字节数组:

    第一个是writeMultiByte

    第二个是writeUTFBytes;  

    //byte.writeMultiByte("钟","gbk"); //两个字节  utf8(无效格式或自定义格式)
    byte.writeUTFByte("钟")            //三个字节  utf-8
    byte.position = 0;
    while(byte.bytesAvailable > 0){
       trace(byte.readByte());
    }
    for(var i:int=0; i<byte.length; i++){
       trace(byte[i],byte[i].toString(16))
    }
    /*
    -42 -45 
     d6 d3  (5453区位编码)
    -23 -110 -97
    */
    结:输入与输出编码格要统一才不会乱码

    1.转为Base64字符

    DisplayObject>bitmapData>ByteArray>Base64>String

    把图片转化为二进制或字符,使用AS3自带的JPEGEncoder和PNGEncoder的encoder方法,其中PNGEncoder为静态方法

    var bit:Bitmap = e.target.content as Bitmap;
    var byte:ByteArray = PNGEncoder.encode(bit.bitmapData);
    var str:String = Base64.encodeByteArray(byte);//使用base64转为字符

    2.字符转图片

    过程:String>Base64>ByteArray>Bitmap>DisplayObject
    还原时,先使用Base64Decoder转为Base64编码的ByteArray,再用Loader.loadBytes(bytes) 对象来读取为Bitmap或(PNGDecoder.decodeImage(bytes))

    var byte1:ByteArray = Base64.decodeToByteArray(str);
    var load:Loader=new Loader();    
    load.loadBytes(byte1);//读取ByteArray    
    load.contentLoaderInfo.addEventListener(Event.COMPLETE, compl);    

    private function compl(event:Event):void {    
        var bitMap:Bitmap=event.target.content as Bitmap;//读取Bitmap    
        this.addChild(bitMap);    
    }

    与ByteArray有相关的类:

    URLLoader --->URLLoaderDataFormat.BINARY 可解决加载数据乱码问题

    1.URLLoader如果遇到乱码,则可以转换

    var _byteArray:ByteArray = new ByteArray;    
    _byteArray.writeBytes(event.target.data); 
    var xml:XML = XML(_byteArray.readUTFBytes(_byteArray.length))

    2.urlloader加载图片

    //加载二进制数据图片 
    var urlloader:URLLoader = new URLLoader();
    urlloader.dataFormat = URLLoaderDataFormat.BINARY; 
    urlloader.addEventListene(Event.COMPLETE,urlHandler);
    urlloader.load(new URLRequest("test.png"));

    //data数据
    var byte:ByteArray = e.target.data as ByteArray;
    //使用load.loadBytes(byte)加载
    var load:Loader=new Loader();    
    load.loadBytes(byte);//读取ByteArray    
    load.contentLoaderInfo.addEventListener(Event.COMPLETE, compl)
  • 相关阅读:
    基于CodeSmith的三层架构代码模板
    全自动时代:JavaScript自动压缩插件
    NServiceBus最流行的开源企业服务总线 for .Net
    神奇的东西
    WebMatrix
    .Net TDD我用Machine.Specification
    JQuery Smart UI 简介(四) — 强大的适用性&存在问题【项目使用性介绍】
    JQuery Smart UI 简介(三)
    JQuery Smart UI 简介(二)
    基于WCF大型分布式系统的架构设计
  • 原文地址:https://www.cnblogs.com/xcai/p/2377392.html
Copyright © 2011-2022 走看看