0

使ってます

var bitmapdata:BitmapData=new BitmapData();
var pixels:Bytearray=new Bytearray();
pixels = rleDecodePixles();
bitmapdata.setPixels(bitmapdata.rect, pixels);

上記のコードの4行目に、「エラー:エラー#2030:ファイルの終わりが見つかりました」というメッセージが表示されます。rectオブジェクトの幅*高さの4倍であるピクセルオブジェクトの長さを確認しました。setPixels()関数がbytearrayからunsigned intを読み取り、その値をピクセルに設定することを考えると、それは機能するはずです。

しかし、なぜこれが機能しないのか私にはわかりません。ピクセルオブジェクトは、サーバーから取得したデータのRLEデコード後に入力されます。

回避策や私が使用しようとする他の方法はありますか?サーバーから取得したデータが認識された形式ではないため、ローダークラスは機能しません。

どんな助けでも大歓迎です。

シュリカント

ありがとう。

4

2 に答える 2

13

ポインタを使用可能な最後の位置を超えて移動しようとすると、ByteArrayからEOFエラーが発生します。ByteArrayに入力すると、実際にはそのポインターが移動するため、何かを実行する前に、その位置をリセットする必要があります。

試す :

var bitmapdata:BitmapData=new BitmapData();
var pixels:Bytearray=new Bytearray();
pixels = rleDecodePixles();
pixels.position = 0; // Reset ByteArray pointer
bitmapdata.setPixels(bitmapdata.rect, pixels);
于 2010-03-24T23:35:32.137 に答える
0

また、次のコードが機能することもわかりました。

bitmap.object.setPixels(bitmap.object.rect, bitmap.createPixels(width, height));

function creatPixels(width:int,height:int):Bytearray
{
   var result:Bytearray=new Bytearray();
    result.length=(width*height)<<2;
    return result;
}

しかし、bytearrayを変更してからピクセルを設定しようとすると、前述のエラーがスローされます。今ではさらに混乱しています。

于 2010-03-19T05:56:23.373 に答える