Question

J'utilise

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

Dans la 4ème ligne dans le code ci-dessus je reçois « Erreur: Erreur # 2030: Fin du fichier a été rencontré. » Je vérifié la longueur des pixels objet qui est 4 fois la largeur * hauteur de rect objet. Étant donné que setPixels () Fonctions lit unsigned int de bytearray et définit cette valeur aux pixels, je pense que cela devrait fonctionner.

Mais je n'ai aucune idée pourquoi cette habitude de travailler. pixels objet est rempli après le décodage RLE des données que je reçois d'un serveur.

Y at-il travail autour ou toute autre méthode que je pourrais essayer d'utiliser. La classe du chargeur travail wont que les données que je reçois du serveur est en aucun du format reconnu.

Toute aide est grandement appréciée.

Shrikant

Merci.

Était-ce utile?

La solution

Vous obtenez l'erreur EOF de ByteArray lorsque vous essayez de déplacer son pointeur au-delà de la dernière position disponible. Lorsque vous remplissez votre ByteArray, vous vous déplacez en fait son pointeur, donc avant de pouvoir faire quoi que ce soit avec elle, vous devez réinitialiser sa position.

Essayez:

var bitmapdata:BitmapData=new BitmapData();
var pixels:Bytearray=new Bytearray();
pixels = rleDecodePixles();
pixels.position = 0; // Reset ByteArray pointer
bitmapdata.setPixels(bitmapdata.rect, pixels);

Autres conseils

Aussi je viens de découvrir que le code suivant fonctionne:

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;
}

Mais après avoir modifié le bytearray puis essayer de définir les pixels qu'il génère l'erreur ci-dessus. encore plus confus maintenant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top