我正在使用
var bitmapdata:BitmapData=new BitmapData();
var pixels:Bytearray=new Bytearray();
pixels = rleDecodePixles();
bitmapdata.setPixels(bitmapdata.rect, pixels);
在上面代码的第4行中,我收到“错误:错误#2030:遇到文件结束。”我检查了 pixel 对象的长度,它是 rect 对象的 width * height 的4倍。鉴于 setPixels()函数从bytearray读取unsigned int并将该值设置为像素,我认为它应该可行。
但我不知道为什么这不起作用。在从服务器获得的数据的RLE解码之后填充像素对象。
是否有任何解决方法或我可以尝试使用的任何其他方法。加载器类不会工作,因为我从服务器获得的数据不是任何可识别的格式。
非常感谢任何帮助。
Shrikant
感谢。
答案 0 :(得分: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);
答案 1 :(得分: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然后尝试设置像素后,它会抛出上述错误。 现在更加困惑。