# XML Slideshow loads all images before displaying

**URL:** https://forum.kirupa.com/t/xml-slideshow-loads-all-images-before-displaying/285018
**Category:** flash
**Created:** [March 26, 2009, 6:09am UTC](https://forum.kirupa.com/t/xml-slideshow-loads-all-images-before-displaying/285018 "2009-03-26T06:09:54Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![mattGSSI](https://avatars.discourse-cdn.com/v4/letter/m/a8b319/32.png) [@mattGSSI](https://forum.kirupa.com/u/mattGSSI)
#### Post date: [March 26, 2009, 6:09am UTC](https://forum.kirupa.com/t/xml-slideshow-loads-all-images-before-displaying/285018/1 "2009-03-26T06:09:54Z")

</div>

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.

```auto

//==================================================================================================================
//--- 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();
    

```
