Предполагая, что объекты карты и зоны используются для некоторых целей отображения и не вызывают методы своих родителей, чтобы они не мешали реальной загрузке, я немного переписал код с переменными для (надеюсь) имеет больше смысла.
var zoneLoaderListener:Object = new Object();
var cardLoaderListenr:Object = new Object();
var dropzones = 5;
var cards = 100;
var loadedDropZones = 0;
var loadedCards = 0;
function loadZone(index) {
var i = Number(index);
var zone:MovieClip=_root["dropzone" + String(i)];
pb1.target = zone._name;
pb1.addEventListener("onLoadComplete", zoneLoaderListener);
trace("LoadZones(index:Number): ------------- "+index);
zone.autoLoad = false;
zone.scaleContent = true;
zone.contentPath= "dropzone"+(i+1)+".jpg";
zone.load();
}
function loadCard(index) {
var j = Number(index);
var card:MovieClip=_root["card" + String(j) + "z"];
pb1.target = card._name;
pb1.addEventListener("onLoadComplete", cardLoaderListener);
trace("LoadCards(index:Number): ------------- "+index);
card.autoLoad = false;
card.scaleContent = true;
card.contentPath= "image"+(j+1)+".jpg";
card.load();
}
zoneLoaderListener.onLoadComplete = function (evt) {
loadedDropZones++;
trace(pb1.target + "Load Complete!");
if(loadedDropZones < dropZones){
_root.loadstatus.dropzonestatus.text = loadedDropZones+1;
loadZone(loadedDropZones);
}else{
// reached end
// no need to load another zone, just begin loading cards
_root.loadstatus.dropzonelabel.text = "Completed!";
_root.loadstatus.cardlabel.text = "Loading...";
//trace("call cards" + i);
loadCard(0);
}
}
cardLoaderListener.onLoadComplete = function (evt) {
loadedCards++;
trace(evt.target + "Load Complete!");
if(loadedCards < cards){
_root.loadstatus.cardstatus.text = loadedCards;
loadCard(loadedCards);
}else {
// last card completed loading
loadComplete();
}
}
function loadComplete() {
trace("Last card completed loading");
}
// init the loading sequence
loadZone(0);
Я пытался скрыть как можно больше от вашего кода.
Возможно, самым большим изменением было бы то, что теперь у нас есть только одна функция слушателя для каждого типа загрузки, и мы не переопределяем новый объект слушателя для каждой загрузки.
Надеюсь, ничего не испортилось, так как я не могу проверить этот код.
Удачи