Poichè ho l'esigenza di caricare da un file zip delle immagini, stavo usando la classe Loader per caricaricare tramite un ByteArray l'immagine.
L'immagine la carico e la vedo senza problemi, ma ho un problema a passare l'immagine ad un oggetto BitmapData.
In pratica, se la passo subito dopo il loading:
codice:
var rawLoader:Loader = new Loader ( ) ;
rawLoader.loadBytes ( bytedata ) ;
var lbmp:BitmapData = new BitmapData ( ... ) ;
lbmp.draw ( rawLoader, ... ) ;
addChild ( lbmp );
Così nella bitmap non viene disegnato nulla. Ho pensato che forse bisognava dargli il tempo di caricare, e quindi assegnargli un listener. In effetti dovrebbe essere un po assurdo perchè l'immagine è gia caricata in memoria tramite ByteArray e Loader dovrebbe solo creare l'immagine ma...
Se assegno un listener Event.COMPLETE al Loader e faccio creare da li la bitmap, funziona senza problemi.
codice:
var rawLoader:Loader = new Loader ( ) ;
rawLoader.loadBytes ( bytedata ) ;
var lbmp:BitmapData = new BitmapData ( ... ) ;
lbmp.draw ( rawLoader, ... ) ;
addChild ( lbmp );
var infoloader:LoaderInfo = rawLoader.contentLoaderInfo;
infoloader.addEventListener(Event.COMPLETE,testload);
function testload ( e:Event )
{
var lbmp:BitmapData = new BitmapData ( ... ) ;
lbmp.draw ( rawLoader, ... ) ;
addChild ( lbmp );
}
Cosi funziona benissimo.
Ora quello che mi chiedo è: C'è un modo per bypassare l'adozione dell'event listener ?
Il problema è che dovenda questa classe restituire a sua volta un oggetto, dovrei creare dei listener a catena fino alla root e non mi piacerebbe molto.
Qualche idea ?