我使用

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

在代码中的第4行以上我收到“错误:错误#2030:遇到文件结束”。我检查像素的长度 的对象,其是 RECT 对象的4倍的宽×高即可。鉴于的setPixels()功能从字节组读取无符号整数,并将该值像素,我认为它应该工作。

但我不知道为什么这不会工作。在像素对象就是我从服务器获取数据的RLE解码后填补。

是否有任何变通或者我可以尝试用任何其他方法。 Loader类不会工作的,我从服务器得到的数据是不是在任何公认的格式。

任何帮助不胜感激。

Shrikant

感谢。

有帮助吗?

解决方案

当您尝试移动其指针超出现有的最后一个位置,您得到的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);

其他提示

此外,我刚发现下面的代码工作:

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,然后尝试将其设置抛出上述错误的像素。 甚至现在更加困惑。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top