8

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

4

1 に答える 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 に答える