XML Slideshow loads all images before displaying

Hey everyone, I’m new here, but I have this problem with some stock code I’ve modified. Everything was working great until I tested it online, and found it was slow as all hell. It turns out that instead of loading and adding all the images one at a time, it loads all the files from the XML, and then adds them all to children, which in my case is 45 large images/swfs.

I’m not at a coding level where I can do what I want from scratch, and this is a big deal/urgent deal so any help would be greatly appreciated.

I would very much prefer to use this code over starting with a new XML Slideshow, as I’ve customized this one with tweener and a button which loads another version of the current image when hovered over (this is working fine at the moment as well).

So if you have a moment, thank you. I am only going to post the code that is necessary otherwise this page will be huge.


//==================================================================================================================
//--- VARIABLES
//==================================================================================================================
var xmlPath:String             = "bestBook/_DEPLOY/xml/md_slider.xml";                // path for xml file
var slideType:String        = "RightToLeft";                    // 4 kinds: RightToLeft, LeftToRight, TopToBottom, BottomToTop
var transitionTime:int        = 1;                                // time for easing animation
var transitionType:String     = "easeOutQuart";                    // what type of easing animation
var looping:Boolean            = false;                                // turn image looping on/off
var autoRun:Boolean            = false;                                // set slider to run automatically
var autoRunSeconds:int         = 3;                                // seconds between slides
var clickable:Boolean        = false;                                // allow image links
var showNav:Boolean            = true;                                // show left/right arrows or not
var showPreloader:Boolean    = true;                                // show preloader or not

var xmlLoader:URLLoader            = new URLLoader();
var xmlData:XML                 = new XML();
var slider_obj:Object            = new Object();
var nextPic:int; 
var nowShowing:int;                
var count:Number                 = 0;
var img_loaders:Array             = new Array();
var img_arr:Array                 = new Array();
var preloader:MovieClip;
var testload:Loader = new Loader();
var bitMap:Bitmap;
var bitMap2:Bitmap;


//==================================================================================================================
//--- XML LOADER
//==================================================================================================================
xmlLoader.addEventListener(Event.COMPLETE, xmlParser);
xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, throwIOError);

function xmlParser(e:Event):void {
    try 
    {
        xmlData = new XML(e.target.data);

        // populate object
        slider_obj.itemNum         = xmlData.item.length();
        slider_obj.imagePath     = xmlData.attribute("imagePath");
        slider_obj.swfPath         = xmlData.attribute("swfPath");
        slider_obj.itemType        = xmlData.item.attribute("type");
        slider_obj.itemURL         = xmlData.item.attribute("url");
        slider_obj.itemWindow     = xmlData.item.attribute("window");
        slider_obj.itemImage      = xmlData.item.image;
        slider_obj.itemOver        = xmlData.item.over;
        
        loadImages();
        startTimer();
    }
    catch (e:Error)
    {
        throwError(e.message);
        return;
    }
}



//==================================================================================================================
//--- INIT MC
//==================================================================================================================
function initMC():void {
    // load xml
    xmlLoader.load(new URLRequest(xmlPath));
}


//==================================================================================================================
//--- IMAGE LOADER
//==================================================================================================================
var itemPath:String;

function loadImages():void {        
    for (var n:Number = 0; n < slider_obj.itemNum; n++) {
        img_loaders[n] = new Loader();
        img_loaders[n].name = "loader_" + n;
        img_loaders[n].contentLoaderInfo.addEventListener(Event.COMPLETE, imageComplete);
        img_loaders[n].contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, throwIOError);

        
        switch(slider_obj.itemType[n].toString()) {
            case "img":
                itemPath = slider_obj.imagePath;
                break;
                
            case "swf":
                itemPath = slider_obj.swfPath;
                break;
                
            default:
                itemPath = slider_obj.imagePath;
                break;
        }
        
        var imgToLoad:URLRequest = new URLRequest(itemPath + slider_obj.itemImage[n].toString());
        img_loaders[n].load(imgToLoad);
        
        
    }
    
    preloader = new(preload);    
    addChild(preloader);
    
    if (showPreloader == false) {
        preloader.visible = false;
    }
    
    preloader.x = 485;
    preloader.y = 300;
    
    
}


//==================================================================================================================
//--- IMAGE LOAD HANDLERS
//==================================================================================================================
function imageComplete(e:Event):void {
    //removeChildAt(0);
    
    count++;
    var quickNum:Number = Number(e.target.loader.name.substr(7));
    img_arr[quickNum] = e.target.content;
    //bitMap = Bitmap(e.target.content);
    //bitMap.smoothing = true;
    

    if (count == slider_obj.itemNum) {
        for (var n:int = 0; n < img_arr.length; n++) {
            
            addChild(img_arr[n]);
            img_arr[n].visible = false;
            
            if (clickable == true && slider_obj.itemType[n].toString() != "swf") enableClicks(img_arr[n], n);    
            if (n==0) slideFWD(0);
        }
    }
    
       // Loads next, back, and mouse over buttons... later in the code
    loadButtons();