2012-06-28 15 views
8

画像をプログレッシブJPEG形式で表示する必要があります(http://en.wikipedia.org/wiki/JPEG#JPEG_compression、シーケンシャルJPEGのプログレッシブ表示と混同しないでください)。 FlashはプログレッシブJPEGの読み込みをサポートしていますが、読み込み中に表示する方法はわかりません。簡単なグーグルでは、シーケンシャルJPEGのプログレッシブ読み込みができます。ロード中にプログレッシブJPEGをFlashに表示する

+0

ここでの質問はどういう意味ですか? http://stackoverflow.com/questions/1814833/how-to-dynamically-load-a-progressive-jpeg-jpg-in-actionscrip-3-using-flash-and –

答えて

4

は、それはこのような何かを行くだろう:loadBytesプロセスが非同期である

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

ていることに注意してください。また、解読不可能なbytearray(通常はonProgressへの最初の呼び出し、処理するイメージデータが不十分な場合)を試すと、静かに失敗するので、何らかの方法で十分なデータがあることを保証する必要があります。 if(bytes.length> 4096);)

+0

ソリューションはイメージを読み込みますが、実際の寸法。 – Pehat

+0

loader.contentLoaderInfo;の最初の完全なイベントでイメージのサイズを取得できるはずです。 – Cay

関連する問題