I had some time to sit down and work on some projects in Actionscript 3, and came up with this XML Slideshow viewer.

Right now the functionality is fairly basic, it reads in the image URL from the XML and displays the image with a nice easing effect. I used the TweenLite tweening library to fade in and tween the images.

Note - Please see updated slideshow here

The source code is posted below, and check back soon for a version with preloaders showing, different transition effects and random image order instead of sequential.

Actionscript:

import gs.*;
 
//hides the description box until the image is loaded
//hides the image until it is loaded
infoBox.alpha = 0;
theImage.alpha = 0;
 
//variables to hold the final coordinates of the image tween
var finalX:Number;
var finalY:Number;
 
//variable to hold the number of images in the XML
var listLength:Number;
 
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, onLoaded);
 
var xml:XML;
 
//keeps track of what image should be displayed
var currPainting:Number = 0;
 
function onLoaded(e:Event):void {
    //load XML
    xml=new XML(e.target.data);
 
    var il:XMLList = xml.images;
    listLength = il.length();
    trace(listLength);
    beginImage();
}
 
function beginImage():void{
    trace(currPainting);
 
    theImage.scaleX = 1;
    theImage.scaleY = 1;
 
 
    var imageLoader = new Loader();
    imageLoader.load(new URLRequest(xml.images[currPainting].pic));
    imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded);
 
    function imgLoaded(event:Event):void {
        theImage.addChild(imageLoader);
        theImage.x = 512 - (imageLoader.content.width / 2);
        theImage.y = 288 - (imageLoader.content.height / 2);
 
        finalX = 512 - (imageLoader.content.width * .8 / 2);
        finalY = 288 - (imageLoader.content.height * .8 / 2);
 
        //load description
        infoBox.theArtist.text=xml.images[currPainting].painter;
        infoBox.theTitle.text=xml.images[currPainting].title;
        infoBox.theDate.text=xml.images[currPainting].date;
 
        //start tween function
        easeIn();
    }
}
 
//loads the XML, URL path of XML file
loader.load(new URLRequest("images.xml"));
 
function easeIn():void{
 
    TweenLite.to(theImage, 10, {scaleX:.8, scaleY:.8, x:finalX, y:finalY, onComplete:hideStuff});
    TweenLite.to(theImage, 3, {alpha:1, overwrite:0});
    TweenLite.to(infoBox, 2, {alpha:1, delay:5});
}
 
function hideStuff():void{
    TweenLite.to(theImage, 3, {alpha:0, onComplete:nextImage});
    TweenLite.to(infoBox, 3, {alpha:0});
}
 
function nextImage():void{
    trace(listLength);
    theImage.removeChildAt(0);
 
    if((currPainting + 1) < listLength){
        currPainting++;
        beginImage();
    }
    else if ((currPainting + 1) == listLength){
        currPainting = 0;
        beginImage();
    }
    else{
        currPainting = 0;
        beginImage();
    }
}

XML:

<xml>
    <images>
        <pic>../files/slideshow/ad_reinhardt_abstract_34.jpg</pic>
        <painter>Ad Reinhardt</painter>
        <title>Abstract Painting #34</title>
        <date>1960 (1964)</date>
    </images>
    <images>
        <pic>../files/slideshow/agnes_martin_white_flower.jpg</pic>
        <painter>Agnes Martin</painter>
        <title>White Flower</title>
        <date>1960 (1960)</date>
    </images>
    <images>
        <pic>../files/slideshow/agnes_martin_untitled_6_1989.jpg</pic>
        <painter>Agnes Martin</painter>
        <title>Untitled 6</title>
        <date>1990 (1989)</date>
    </images>
</xml>