Flash / XML fading slideshow
I need some HELP !?
i have a fade in & out slide show - works well. The slide show gets
the content var from an XML file e.g. _x _y pos of the images, fade
times and time between images etc...
However ontop of the images fading in & out i need to:
- add a single word for each image
(so the word has got to fade in and out with that specific image too)
- need to be able to change the colour of the word
(depending if its on a dark background or light background)
- and need to be able to change the position of the word on the image
(so the word is not over a part of the image that would make it hard to read)
all of this needs to be done in the XML file ! so the flash movie or images
never need to be touched again.
IS THIS POSSIBLE ??? any help pointers, tutorials etc... would be great
as my XML knowledge isn't good, nor my actionscript !
----------------------------------------------------------------------
THE CURRENT XML FILE READS LIKE THIS :
----------------------------------------------------------------------
<!--
"timer" -- Number of seconds between each image transition.
"order" -- How you want your images displayed. choose either 'sequential' or 'random'.
"looping" -- If the slide show is in sequential mode, this stops the show at the last image (use 'yes' for looping, 'no' for not).
"fadetime" -- Velocity of image crossfade. Increment for faster fades, decrement for slower. Approximately equal to seconds.
"xpos" -- _x position of all loaded clips (0 is default).
"ypos" -- _y position of all loaded clips (0 is default).
-->
<gallery timer="5" order="sequential" fadetime="2" looping="yes" xpos="0" ypos="0" >
<image path="images/slideshow_1.jpg" /> <!-- slideshow image 1 -->
<image path="images/slideshow_2.jpg" /> <!-- slideshow image 2 -->
<image path="images/slideshow_3.jpg" /> <!-- slideshow image 3 -->
<image path="images/slideshow_4.jpg" /> <!-- slideshow image 4 -->
<image path="images/slideshow_5.jpg" /> <!-- slideshow image 5 --> <!-- to add more images duplicate this line of code and paste below -->
</gallery>
----------------------------------------------------------------------
THE CURRENT ACTIONSCRIPT IN THE FIRST FRAM OF THE TIMELINE IS:
(actionscript in the first frame of the timeline)
----------------------------------------------------------------------
fscommand("allowscale", "false");
// set random # variables - each must be 0 for first 'while' loop below
var randomNum = 0;
var randomNumLast = 0;
// parent container
var container_mc = this.createEmptyMovieClip("container",0);
// movie clip containers
container_mc.createEmptyMovieClip("loader1_mc",2);
container_mc.createEmptyMovieClip("loader2_mc",1);
// preload watcher
this.createEmptyMovieClip("watcher_mc",100);
// load xml
images_xml = new XML();
images_xml.ignoreWhite=true;
images_xml.onLoad = parse;
images_xml.load("slideshow.xml");
function parse(success) {
if (success) {
imageArray = new Array();
var root = this.firstChild;
_global.numPause = Number(this.firstChild.attributes.timer * 1000);
_global.order = this.firstChild.attributes.order;
_global.looping = this.firstChild.attributes.looping;
_global.fadetime = Number(this.firstChild.attributes.fadetime);
_global.xpos = Number(this.firstChild.attributes.xpos);
_global.ypos = Number(this.firstChild.attributes.ypos);
_global.strapline = (this.firstChild.attributes.strapline);
var imageNode = root.lastChild;
var s=0;
while (imageNode.nodeName != null) {
imageData = new Object;
imageData.path = imageNode.attributes.path;
imageArray[s]=imageData;
imageNode = imageNode.previousSibling;
s++;
}
// place parent container
container_mc._x = _global.xpos;
container_mc._y = _global.ypos;
// parse array
imageArray.reverse();
imageGen(imageArray);
} else {
trace('problem');
}
}
// depth swapping
function swapPlace(clip,num) {
eval(clip).swapDepths(eval("container_mc.loader"+n um+"_mc"));
}
function loadImages(data,num) {
if (i==undefined || i == 2) {
i=2;
createLoader(i,data,num);
i=1;
} else if (i==1) {
createLoader(i,data,num);
i=2;
}
}
function createLoader(i,data,num) {
thisLoader=eval("container_mc.loader"+i+"_mc");
thisLoader._alpha=0;
thisLoader.loadMovie(data[num].path);
watcher_mc.onEnterFrame=function () {
var picLoaded = thisLoader.getBytesLoaded();
var picBytes = thisLoader.getBytesTotal();
if (isNaN(picBytes) || picBytes < 4) {
return;
}
if (picLoaded / picBytes >= 1) {
swapPlace("container_mc.loader2_mc",1);
alphaTween = new mx.transitions.Tween(thisLoader, "_alpha", mx.transitions.easing.Regular.easeOut,0,100,_globa l.fadetime,true);
timerInterval = setInterval(imageGen,_global.numPause,data);
delete this.onEnterFrame;
}
}
}
function imageGen(data) {
// random, or sequential?
if (_global.order=="random") {
// choose random # between 0 and total number of images
while (randomNum == randomNumLast) {
randomNum = Math.floor(Math.random() * data.length);
trace(randomNum);
}
loadImages(data,randomNum);
randomNumLast = randomNum;
} else if (_global.order=="sequential") {
// start at 0, increment to total number of images, then drop back to zero when done
if (p==undefined || p==data.length && _global.looping=="yes") { p=0; } else { break; }
loadImages(data,p);
p++;
} else {
trace ("order attribute in xml isn't correct - must specify either 'random' or 'sequential'");
}
clearInterval(timerInterval);
}
stop();
----------------------------------------------------------------------
Thanks !!! Thanks !!! Thanks !!! Thanks !!! Thanks !!!Thanks !!!
Thanks !!! Thanks !!! Thanks !!! Thanks !!! Thanks !!! Thanks !!!
|