Flash XML Gallery with .swf files

Hello, I posted about this a week or so again, and well, read on…

I’m trying to create something similar to a Flash XML gallery, except pulling in .swf files, instead of just normal image files.

So, I found a free XML gallery online, and I’ve been trying to change and edit it, but now I’m getting a “Error #2044: Unhandled IOErrorEvent:. text=Error #2035: URL Not Found.” when I try to run it.

My AS code is below:


import caurina.transitions.Tweener;

// delay between swf files
const TIMER_DELAY:int = 5000;
// fade time between swf files
const FADE_TIME:int =    1;

// reference to the current container
var currentContainer:Sprite;
// index of the current swf
var intCurrentSlide:int = -1;
// total swf files
var intSlideCount:int;
// timer for switching swf's
var slideTimer:Timer;
// holder
var sprContainer1:Sprite;
var sprContainer2:Sprite;
// loader
var slideLoader:Loader;
// url to xml
var strXMLPath:String = "data.xml";
// xml loader
var xmlLoader:URLLoader;
// xml
var xmlSlideshow:XML;

function init():void {
    // create new urlloader for xml file
    xmlLoader = new URLLoader();
    // add listener for complete event
    xmlLoader.addEventListener(Event.COMPLETE, onXMLLoadComplete);
    // load xml file
    xmlLoader.load(new URLRequest(strXMLPath));
    
    // create new timer with delay from constant
    slideTimer = new Timer(TIMER_DELAY);
    // add event listener for timer event
    slideTimer.addEventListener(TimerEvent.TIMER, switchSlide);
    
    // create 2 container sprite which will hold the slides and
    // add them to the masked movieclip
    sprContainer1 = new Sprite();
    sprContainer2 = new Sprite();
    mcSlideHolder.addChild(sprContainer1);
    mcSlideHolder.addChild(sprContainer2);
    
    // keep a reference of the container which is currently
    // in the front
    currentContainer = sprContainer2;
    
}
    
function onXMLLoadComplete(e:Event):void {
    // create new xml with the received data
    xmlSlideshow = new XML(e.target.data);
    // get total slide count
    intSlideCount = xmlSlideshow..image.length();
    // switch the first slide without a delay
    switchSlide(null);
}
    
function fadeSlideIn(e:Event):void {
    // add loaded slide from slide loader to the
    // current container
    currentContainer.addChild(slideLoader.content);
    // clear preloader text
    mcInfo.lbl_loading.text = "";
    // fade the current container in and start the slide timer
    // when the tween is finished
    Tweener.addTween(currentContainer, {alpha:1, time:FADE_TIME, onComplete:function() { slideTimer.start(); }});
}

function switchSlide(e:Event):void {
    // check, if the timer is running (needed for the
    // very first switch of the slide)
    if(slideTimer.running)
        slideTimer.stop();
    
    // check if we have any slides left and increment
    // current slide index
    if(intCurrentSlide + 1 < intSlideCount)
        intCurrentSlide++;
    // if not, start slideshow from beginning
    else
        intCurrentSlide = 0;
    
    // check which container is currently in the front and
    // assign currentContainer to the one that's in the back with
    // the old slide
    if(currentContainer == sprContainer2)
        currentContainer = sprContainer1;
    else
        currentContainer = sprContainer2;
    
    // hide the old slide
    currentContainer.alpha = 0;
    // bring the old slide to the front
    mcSlideHolder.swapChildren(sprContainer2, sprContainer1);
    
    // create a new loader for the slide
    slideLoader = new Loader();
    // add event listener when slide is loaded
    slideLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, fadeSlideIn);
    // add event listener for the progress
    slideLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, showProgress);
    // load the next slide
    slideLoader.load(new URLRequest(xmlSlideshow..image[intCurrentSlide].@src));
    
    // show description of the next slide
    mcInfo.lbl_description.text = xmlSlideshow..image[intCurrentSlide].@desc;
    // show current slide and total slides
    mcInfo.lbl_count.text = (intCurrentSlide + 1) + " / " + intSlideCount + " Movies";
}

function showProgress(e:ProgressEvent):void {
    // show percentage of the bytes loaded from the current slide
    mcInfo.lbl_loading.text = "Loading..." + Math.ceil(e.bytesLoaded * 100 / e.bytesTotal) + "%";
}

// init slideshow
init();

Also, my XML code:


<?xml version="1.0" encoding="UTF-8"?>
<slideshow>
    <!-- <image src="swf_files/fly.jpg" desc="Fly" /> -->
    <image src="swf_files/contdown.swf" desc="Lucrum Inc."/>
    <image src="swf_files/box.swf" desc="A box!"/>
    <image src="swf_files/lines.swf" desc="What are those?"/>
</slideshow>

My file paths are correct in both the AS and the XML, I’ve double checked that quite a few times. Does it have something to do with the XML using <image> tags? Do I need to use something else? Or is it something within the AS that is causing it. It will work fine when I put images in it.

Thanks for reading this long post, I’m semi-familiar with Flash, just have never done anything like this before, so any help is much appreciated!

Thanks a bunch.