Domanda

sto usando

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

Nel 4 ° riga nel codice sopra sto ottenendo "l'errore: Errore # 2030: è stata rilevata la fine del file." Ho controllato il length delle pixel oggetto che è 4 volte il width * height della rect oggetto. Dato che setPixels () le funzioni di legge unsigned int da ByteArray e stabilisce che il valore di pixel, penso che dovrebbe funzionare.

Ma non ho idea perché questo non funzionerà. pixel oggetto è riempito dopo RLE la decodifica dei dati che ottengo da un server.

C'è qualche lavoro intorno o qualsiasi altro metodo che ho potuto provare a utilizzare. Il lavoro wont classe Loader come i dati che ricevo dal server non è in alcun del formato riconosciuto.

Ogni aiuto è molto apprezzato.

Shrikant

Grazie.

È stato utile?

Soluzione

Si ottiene l'errore EOF da ByteArray quando si tenta di spostare il suo puntatore oltre l'ultima posizione disponibile. Quando si compila il tuo ByteArray, effettivamente spostare il suo puntatore, quindi prima si può fare nulla con esso, è necessario ripristinare la sua posizione.

Prova:

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

Altri suggerimenti

Inoltre ho appena scoperto che il seguente codice funziona:

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

Ma dopo che ho modificato il ByteArray e quindi provare a impostare i pixel che genera l'errore di cui sopra. ancora più confuso ora.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top