var fData:ByteArray = new ByteArray();
我需要删除此数组中的一些字节,但在Flash中找不到任何公共方法来执行此操作。 我搜索了类似fData.remove(start,length)的内容,但没有成功。
这是一个代码
function _dlProgressHandler(evt:ProgressEvent):void { //this is progressEvent for URLStream
............... ///some code
var ff:ByteArray = new ByteArray();
stream.readBytes(ff,0,stream.bytesAvailable);
fileData.writeBytes(ff,0,ff.length); //stream writes into fileData byteArray
//and here is cutter:
fileData.position=0;
fileData.writeBytes(ff,100,fileData.length);
fileData.length=fileData.length-100);
}
因此,fileData有时会无法预测。 有时老块被发现两次,有时根本找不到它们。
答案 0 :(得分:3)
您始终只能读取所需的字节,这与丢弃您不想要的字节具有相同的效果。作为一个非常简单的示例,假设您有一个10字节长的ByteArray,并且您想要丢弃前3个字节:
var newBytes:ByteArray = new ByteArray();
newBytes.writeBytes(fData, 2, 7);
因此,您只需创建一个新的ByteArray并从fData中获取所需的字节,而不是从fData中删除不需要的字节。
显然,如果要删除的字节序列不仅仅是fData开头或结尾的序列,它会稍微复杂一点,但方法保持不变:读取你想要的字节,而不是删除你没有的那些。
答案 1 :(得分:3)
AS-3有时非常好。这会从您想要的任何位置删除数组中的字节。开始,中间或结束。只需要检查索引以避免IndexOutOfBounds
var array: ByteArray = ...; // create the byte array or load one
var index: int = 4;
var count: int = 5;
array.position = index;
array.writeBytes(array, index + count, array.length - (index + count));
array.length = array.length - count;