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();
}
}