Файлы грузятся по очереди, теоретически можно начать грузить файл, получить его размер, бросить и начать грузить следующий, а потом все по -новой, но это ж тоска зеленая и не факт что сработает. Работающая схема:
xml

Код:
<?xml version="1.0" encoding="utf-8"?><files>
<file id="main" src="main.swf" size="294311" depth="10"/>
<file id='mover' src='mover.swf' size="1234" depth="2000000" />
<file id='tracer' src='tracer.swf' size="999" depth="2000001" />
</files>
Размер файла выдается на сервере через php filеsize (вроде бы). Или забивается вручную, можно от балды (в этом случае индикатор загрузки будет двигаться то быстрее, то медленнее чем надо, типа коннект неровный)
Затем xml обрабатывается, значения суммируются и получается общий размер всех файлов. Далее размер каждого файла делим на общую сумму и получаем долю файла в общем весе файлов.
Далее грузим каждый файл по очереди, делим реально загруженное на реальный размер файла и умножаем на заявленную долю.
Вот кусок кода, выдран из класса, работать ессно не будет, только как иллюстрация:

Код:
private static function loadAll():Void{
var fakeTotal:Number = 0;
loadedK = 0;
var i:Number = 0;
numLoaded = 0;
numLoad = loadArr.length;
if(numLoad > 0){
loader.percent = 0;
for( i = 0; i< loadArr.length; i++)fakeTotal += loadArr[i].size;
for( i = 0; i< loadArr.length; i++)loadArr[i].k = loadArr[i].size / fakeTotal;
}
loadNext();
}
private static function loadNext():Void{
if(!loadArr.length){
onLoadEnd();
return;
}
var o:Object = loadArr.pop();
currK = o.k;
mcl.loadClip( o.src, o.tgt );
}
private static function onLoadInit( mc:MovieClip ){
loadedK += currK;
loadNext();
}
private static function onLoadProgress( mc:MovieClip, loadedBytes:Number, totalBytes:Number ){
var n:Number = currK * loadedBytes/(totalBytes || 1000000) + loadedK;
loader.percent = n;
}
Плюс схемы - не дает ошибки даже при неверно указанном размере файлов, потому что сумма всех долей - 1.