遇到EOF出错转换ByteArray的位图数据
-
20-09-2019 - |
题
我使用
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,然后尝试将其设置抛出上述错误的像素。 甚至现在更加困惑。
不隶属于 StackOverflow