# Adding Preloader to XML Gallery

**URL:** <https://forum.kirupa.com/t/adding-preloader-to-xml-gallery/296198>\
**Category:** flash\
**Created:** [September 10, 2009, 5:54pm UTC](https://forum.kirupa.com/t/adding-preloader-to-xml-gallery/296198 "2009-09-10T17:54:01Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Agold](https://avatars.discourse-cdn.com/v4/letter/a/bbce88/32.png) [@Agold](https://forum.kirupa.com/u/Agold)\
**Post date:** [September 10, 2009, 5:54pm UTC](https://forum.kirupa.com/t/adding-preloader-to-xml-gallery/296198/1 "2009-09-10T17:54:01Z")

</div>

Ok so I have this XML gallery working perfectly, but I want to add a preloader to it. I have the loader and child all in one package, and that package is called via back and forward buttons according to if/else statements that ensure that the xml gallery does not get confused. I figure ok, so it’s simple, I just add the preloader into the package using if/else statement, but I can’t seem to get it to interact with the imageLoader I have set up in this package. As it stands right now I get no compile errors, but I do get an output error at runtime stating that packagedF and xmlLoadedF are now null object references. Take a look and see if you can figure out what I’m doing wrong:

stop();

var xmlRequest:URLRequest= new URLRequest(“graphicImages.xml”);  
var xmlLoader:URLLoader = new URLLoader(xmlRequest);  
var imgData:XML;  
var imageLoader:Loader;  
var rawImage:String;  
var rawH:String;  
var rawW:String;

var imgNum:Number = 0;  
var numberOfChildren:Number;

xmlLoader.addEventListener(Event.COMPLETE, xmlLoadedF);  
graphicBackBtn.addEventListener(MouseEvent.CLICK, prevImgF);  
graphicBackBtn.buttonMode = true;  
graphicForwardBtn.addEventListener(MouseEvent.CLICK, nextImgF);  
graphicForwardBtn.buttonMode = true;  
backBtn.addEventListener(MouseEvent.CLICK, backToMain);  
backBtn.buttonMode = true;

function backToMain(event:MouseEvent):void{  
graphicBackBtn.removeEventListener(MouseEvent.CLICK, prevImgF);  
graphicForwardBtn.removeEventListener(MouseEvent.CLICK, nextImgF);  
backBtn.removeEventListener(MouseEvent.CLICK, backToMain);  
gotoAndPlay ( 21 )  
}

function xmlLoadedF(event:Event):void{  
imgData = new XML(event.target.data);  
packagedF();  
}

function packagedF():void{  
rawImage = imgData.image[imgNum].imgURL;  
numberOfChildren = imgData._.length();  
rawW = imgData.image[imgNum].imgW;  
rawH = imgData.image[imgNum].imgH;  
imageLoader = new Loader;  
imageLoader.load (new URLRequest(rawImage));  
var toLoadF:Number = imageLoader.loaderInfo.bytesTotal;  
var loadedF:Number = imageLoader.loaderInfo.bytesLoaded;  
var totalF:Number = loadedF/toLoadF;  
if(loadedF == toLoadF){  
graphicmaster\_mc.addChild(imageLoader);  
imageLoader. x = (graphicmaster\_mc.width - Number(rawW)) / 2;  
imageLoader. y = (graphicmaster\_mc.height - Number(rawH)) / 2;  
desc\_txt.text = imgData.image[imgNum].imgTitle;  
pos\_txt.text = imgData.image[imgNum].imgNumb;  
tot\_txt.text = imgData._.length();  
}else{  
preloader\_mc.preloaderFill\_mc.scaleX = totalF;  
}  
}

function nextImgF(event:MouseEvent):void{  
if(imgNum \< (numberOfChildren - 1)){  
imageLoader.unload();  
imgNum++;  
packagedF();  
}  
}

function prevImgF(event:MouseEvent):void{  
if(imgNum \> 0){  
imageLoader.unload();  
imgNum–;  
packagedF();  
}  
}
