error EOF encontró mientras que la conversión bytearray a bitmapData
-
20-09-2019 - |
Pregunta
Estoy utilizando
var bitmapdata:BitmapData=new BitmapData();
var pixels:Bytearray=new Bytearray();
pixels = rleDecodePixles();
bitmapdata.setPixels(bitmapdata.rect, pixels);
En la cuarta línea en el código anterior que estoy recibiendo "Error: Error # 2030: Se ha encontrado el final del archivo." Comprobé el longitud de los píxeles objeto que es 4 veces la width * height del rect objeto. Teniendo en cuenta que setPixels () funciones lee entero sin signo de bytearray y establece que el valor de píxeles, creo que debería funcionar.
Pero no tengo idea de por qué esto no funcionará. Los píxeles objeto se llena después de RLE decodificación de los datos que i obtener de un servidor.
¿Hay algún trabajo alrededor o cualquier otro método que podría tratar de usar. El cargador de clases no trabajará como los datos que recibo de que el servidor no está en ninguna de formato reconocido.
Cualquier ayuda es muy apreciada.
Shrikant
Gracias.
Solución
Se obtiene el error EOF de ByteArray cuando intenta mover el puntero más allá de la última posición disponible. Cuando obtiene su ByteArray, en realidad se mueva su puntero, por lo que antes de poder hacer nada con ella, hay que restablecer su posición.
Probar:
var bitmapdata:BitmapData=new BitmapData();
var pixels:Bytearray=new Bytearray();
pixels = rleDecodePixles();
pixels.position = 0; // Reset ByteArray pointer
bitmapdata.setPixels(bitmapdata.rect, pixels);
Otros consejos
También me acabo de enterar que el siguiente código funciona:
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;
}
Pero después de que he modificado el bytearray y luego tratar de establecer los píxeles que arroja el error antes mencionado. aún más confundido ahora.