2012-06-28 11 views
8

devo visualizzare l'immagine in formato JPEG progressivo (http://en.wikipedia.org/wiki/JPEG#JPEG_compression, da non confondere con visualizzazione progressiva sequenziale JPEG). Flash supporta il caricamento del JPEG progressivo, ma non ho idea di come visualizzarlo durante il caricamento. Breve googling mi dà il caricamento progressivo di JPEG sequenziale e nient'altro.visualizzazione progressiva JPEG in Flash durante il caricamento

+0

Vuoi dire come chiesto qui? http://stackoverflow.com/questions/1814833/how-to-dynamically-load-a-progressive-jpeg-jpg-in-actionscrip-3-using-flash-and –

risposta

4

sarebbe andare qualcosa di simile:

// the loader containing the image 
var loading:Boolean = false; 
var loader:Loader = new Loader(); 
addChild(loader); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function() { 
    loading = false; 
    trace(loader.width, loader.height); 
}); 

var bytes:ByteArray = new ByteArray(); 

var stream:URLStream = new URLStream(); 
stream.addEventListener(ProgressEvent.PROGRESS, onProgress); 
stream.addEventListener(Event.COMPLETE, onProgress); 
stream.load(new URLRequest(imageURL)); 

function onProgress(e:Event):void { 
    stream.readBytes(bytes, bytes.length); 
    if((bytes.length > 4096 && !loading) || e.type == Event.COMPLETE) { 
     loading = true; 
     loader.loadBytes(bytes); 
    } 
} 

notare che il processo loadBytes è asincrono. Inoltre, quando lo provi con un bytear non analizzabile (di solito le prime chiamate a onProgress, quando non ci sono abbastanza dati di immagine da elaborare) falliscono silenziosamente, quindi devi in ​​qualche modo garantire di avere abbastanza dati ... in questo caso ho usato se (bytes.length> 4096);)

+0

La tua soluzione carica l'immagine ma non riesce a determinarne dimensioni reali. – Pehat

+0

Dovresti essere in grado di ottenere le dimensioni dell'immagine sul primo evento completo di loader.contentLoaderInfo;) – Cay