0

目标是从位图显示 jpeg 编码的进度。我有几个需要编码的位图。所以我得到了这里建议的字节总数:

for (var i:int = 0; i < bitmaps.length; i++) 
{
    bmp = bitmaps[i];

    total_bytes += bmp.getPixels(bmp.rect).length;
}

然后我试图在进行异步编码时显示进度。我得到一个ProgressEvent,它给了我 bytesLoaded。所以我这样计算进度:

total_loaded_bytes += event.bytesLoaded;

var percentage:int = ((total_loaded_bytes / total_bytes) * 100);

但是,total_bytes加起来不total_loaded_bytes。加载的总字节数要高得多。

4

1 回答 1

0

使用bytesLoaded财产的错误方法。这不能简单地加起来,因为它包含Loader发出事件的对象已加载的字节总数。还有一种获取总字节数的错误方法,您需要event.bytesTotal在进度事件侦听器中使用,因为您正在加载字节,而不是像素。即使您正在上传. 此外,异步编码可能完全无法获得确切的进度,您只显示上传/下载进度。

更新:要接收累积的进度,请执行以下操作:

var loaders:Array=[]; // array of loaders. Fill manually
var progress:Array=[]; // fill with zeroes alongside loaders, should be same size
function updateProgress(e:ProgressEvent):void {
    var loader:Loader=e.target as Loader;
    if (!loader) return; // or skip type coercion, we just need the reference
    var i:int=loaders.indexOf(loader); // now get an index from array
    if (i<0) return; // not found, drop it
    progress[i]=e.bytesLoaded; // and update progress array with new value
    // now sum up progress array and divide by aggregated bytesTotal
    // this one is up to you
}
于 2013-08-19T16:10:30.333 回答