AS3: ByteArray几个要注意的方法和属性

来源:互联网 发布:java封装修饰符 编辑:程序博客网 时间:2024/05/22 03:23
1、readBytes()方法 
官方
public function readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void  

 

从字节流中读取 length 参数指定的数据字节数。从 offset 指定的位置开始,将字节读入bytes 参数指定的 ByteArray 对象中,并将字节写入目标ByteArray 中。

参数  bytes:ByteArray — 要将数据读入的ByteArray 对象。  offset:uint (default =0) — bytes 中的偏移(位置),应从该位置写入读取的数据。  length:uint (default =0) — 要读取的字节数。默认值 0 导致读取所有可用的数据。

 

注意:

offset就是在bytes中从offset这个位置开始写入。

length就是一段位移,一段在ByteArray中的位移。 

如例

      var bt2:ByteArray=new ByteArray();

      var bt:ByteArray=new ByteArray();
            bt.writeInt(1);
            bt.writeUTF("aa");
            bt.writeUTF("dd");           

              
        A:   

            bt.position=4;    //这里设置position=4,下面的readBytes就应该从bt的4位置,开始读取数据到bt2中

            bt.readBytes(bt2);   //只将aa 和 dd 写进去bt2中了


            bt2.position=0;

            trace(bt2.readUTF().toString());          //显示 aa

 

       B:   

             bt.positon=0;

              bt.readBytes(bt2,2,bt.length);     //这样bt2前面的两个字节是空的,但是

              bt2.position=0;                 //这一步是多余,bt2的positon本来就是0,但是bt的position已经变成12

              trace(bt2.readInt().toString());          //显示空,若设置bt2.position=2,则显示1

 

********************************************************************************************

bytesAvailable属性

bytesAvailable:uint  []

 

 

 

 

可从字节数组的当前位置数组末尾读取的数据的字节数。

每次访问 ByteArray 对象时,将bytesAvailable 属性与读取方法结合使用,以确保读取有效的数据。

不管是read还是write都会叠加数组的position,read不会减少原数组的字节,bytesAvailable的数目完全取决于position的位置。

 

如例:

     bt.readBytes(bt2,2,bt.length);     //这样bt2前面的两个字节是空的

     trace(bt.position);     //12
     trace(bt2.position)    //  0
     trace(bt2.bytesAvailable) ;                   //12+2=14

 

 

 

原创粉丝点击