2012-06-28 27 views
8

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

+0

Ý 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 –

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

+0

Giải pháp của bạn tải hình ảnh nhưng không xác định được kích thước thực tế. – Pehat

+0

Bạn sẽ có thể nhận được kích thước hình ảnh trên sự kiện hoàn chỉnh đầu tiên của loader.contentLoaderInfo;) – Cay

Các vấn đề liên quan