Okay, so I have a problem, I am making an xml driven banner rotator. Everything works fine when I test my .swf, as in images load and show up.
But when i try to use the bandwidth profiler it displays loading progress but never shows the images.
I have absolutely no clue why this happens and would be thankful if someone could tell me why this is happening.
This is my code which is the document class of a blank .fla file.
package
{
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.display.Loader;
public class BannerRotator extends MovieClip
{
public var imagePathList:Array = new Array();
public var imageTextList:Array = new Array();
public var imageLoaderList:Array = new Array();
public var imageLoadedList:Array = new Array();
public var imageList:Array = new Array();
var imagesLoaded:int = 0;
var imagesTotal:int;
var xmlLoaded;
var currentImage;
public function BannerRotator()
{
loadXML("gallery.xml");
}
public function loadXML(path:String)
{
var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE,parseXml);
xmlLoader.load(new URLRequest(path));
trace("loading xml");
}
public function parseXml(e:Event):void
{
var xmlData = new XML(e.target.data);
var xmlImageList:XMLList = xmlData.image.path;
var xmlTextList:XMLList = xmlData.image.text;
trace("parsing xml");
for each (var imageElement:XML in xmlImageList)
{
imagePathList.push(imageElement);
}
for each (var textElement:XML in xmlTextList)
{
imageTextList.push(textElement);
}
imagesTotal = imagePathList.length;
xmlLoaded = true;
loadImages();
}
public function loadImages()
{
trace("loading image"+imagesLoaded+" "+(imagesLoaded+1)+"/"+imagesTotal);
loadImage(imagePathList[imagesLoaded]);
}
public function loadImage(path:String)
{
var imageLoader:Loader = new Loader();
imageLoader.load(new URLRequest(path));
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded);
imageLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onImageProgress);
imageLoaderList.push(imageLoader);
}
public function onImageProgress(e:ProgressEvent){
trace(e.bytesLoaded/e.bytesTotal);
}
public function onImageLoaded(e:Event)
{
trace("finished loading image"+imagesLoaded+" "+(imagesLoaded+1)+"/"+imagesTotal);
imagesLoaded++;
if(imagesLoaded == 1){
displayImage(0);
}
if(imagesLoaded < imagesTotal){
//loadImage(imagePathList[imagesLoaded]);
loadImages();
}
}
public function displayImage(i:int)
{
trace("displaying image"+i);
stage.addChild(imageLoaderList*);
}
}
}