イメージをプログレッシブ JPEG 形式で表示する必要があります ( http://en.wikipedia.org/wiki/JPEG#JPEG_compression、シーケンシャル JPEG のプログレッシブ表示と混同しないでください)。Flash はプログレッシブ JPEG の読み込みをサポートしていますが、読み込み中に表示する方法がわかりません。簡単なグーグル検索では、シーケンシャル JPEG のプログレッシブ ロードのみが可能です。
質問する
864 次
1 に答える
4
それは次のようになります:
// 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);
}
}
loadBytesプロセスが非同期であることに注意してください。また、解析不可能なバイト配列で試してみると(通常、処理するのに十分な画像データがない場合、onProgressへの最初の呼び出し)、サイレントに失敗するため、十分なデータがあることを何らかの方法で保証する必要があります...この場合はif(bytes.length> 4096) ;)
于 2012-07-01T17:12:00.487 に答える