Tôi cần hiển thị hình ảnh ở định dạng JPEG lũy tiến (http://en.wikipedia.org/wiki/JPEG#JPEG_compression, không bị nhầm lẫn với hiển thị liên tiếp của JPEG tuần tự). Flash hỗ trợ tải JPEG tiến bộ, nhưng tôi không có ý tưởng làm thế nào để hiển thị nó trong quá trình tải. Googling ngắn gọn mang lại cho tôi tiến trình tải liên tiếp JPEG và không có gì khác.Hiển thị JPEG tiến bộ trong Flash trong khi đang tải
8
A
Trả lời
4
Nó sẽ đi một cái gì đó như thế này:
// 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);
}
}
Chú ý rằng quá trình loadBytes là không đồng bộ. Ngoài ra, khi bạn thử bằng một dấu ngắt (thường là các cuộc gọi đầu tiên đến onProgress, khi không có đủ dữ liệu hình ảnh để xử lý) nó không thành công, vì vậy bạn cần đảm bảo rằng bạn có đủ dữ liệu ... trong trường hợp này tôi đã sử dụng if (bytes.length> 4096);)
Ý của bạn là được hỏi ở đây? http://stackoverflow.com/questions/1814833/how-to-dynamically-load-a-progressive-jpeg-jpg-in-actionscrip-3-using-flash-and –