3

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は予期せずに自分自身をカットすることがあります。古いブロックが2回見つかることもあれば、まったく見つからないこともあります。

4

2 に答える 2

3

いつでも必要なバイトのみを読み取ることができます。これは、不要なバイトを破棄するのと同じ効果があります。非常に単純な例として、10 バイトの長さの ByteArray があり、最初の 3 バイトを破棄したいとします。

var newBytes:ByteArray = new ByteArray();
newBytes.writeBytes(fData, 2, 7);  

したがって、fData から不要なバイトを削除する代わりに、新しい ByteArray を作成し、fData から必要なバイトのみを取得します。

明らかに、削除したいバイトのシーケンスが fData の先頭または末尾からの単なるシーケンスではない場合、もう少し複雑になりますが、方法は同じです。バイトを削除する代わりに、必要なバイトを読み取ります。あなたはそうしない。

于 2012-08-07T17:57:11.543 に答える