我需要以渐进式JPEG格式显示图像(http://en.wikipedia.org/wiki/JPEG#JPEG_compression,不要与顺序JPEG的逐行显示混淆)。 Flash支持加载渐进式JPEG,但我不知道如何在加载过程中显示它。简短的谷歌搜索让我逐步加载顺序JPEG,没有别的。
答案 0 :(得分: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进程是异步的。此外,当您使用不可解析的bytearray(通常是第一次调用onProgress,当没有足够的图像数据要处理)尝试它时,它会无声地失败,因此您需要以某种方式保证您有足够的数据...在这种情况下我使用 if(bytes.length> 4096);)