将bytearray转换为bitmapdata时遇到EOF错误

int*_*ild 0 apache-flex actionscript-3 bitmapimage

我在用

var bitmapdata:BitmapData=new BitmapData();
var pixels:Bytearray=new Bytearray();
pixels = rleDecodePixles();
bitmapdata.setPixels(bitmapdata.rect, pixels);
Run Code Online (Sandbox Code Playgroud)

在上面代码的第4行,我得到"错误:错误#2030:遇到文件结束." 我检查了像素对象的长度,它是rect对象宽度*高度的4倍.鉴于setPixels()函数从bytearray读取unsigned int并将该值设置为像素,我认为它应该可行.

但我不知道为什么这不起作用.在从服务器获得的数据的RLE解码之后填充像素对象.

是否有任何工作或我可以尝试使用的任何其他方法.加载器类不会工作,因为我从服务器获得的数据不是任何可识别的格式.

任何帮助是极大的赞赏.

Shrikant

谢谢.

Mex*_*ood 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);
Run Code Online (Sandbox Code Playgroud)