first off, i’m pretty new with actionscript so the answer to this question may be obvious. however, i cannot for the life of me figure out what i’m doing wrong or how to fix it.
so, i went through the tutorial for the auto slideshow with xml
http://www.kirupa.com/developer/mx2004/xml_slideshow.htm
everything is working great for the auto slideshow; however, my issue is with the “previous” and “next” buttons. the “previous” seems to work in that it will back up to the previous slide, no problem, but if my slides are times for 3 seconds each and i hit previous at 2.5 seconds into the current slide, i only have .5 seconds to view the previous slide and not the full 3 seconds.
OK next issue is with the “next” button – i have 4 slides/photos it works fine from slide 1 to slide 2, but if i hit next to go from 2 to 3 the slideshow starts an endless loop from 1 to 3 to 1 to 3 to 1 and it never jumps out of that loop. the same thing happens from 3 to 4 – the loop is 2 to 4 to 2 to 4 to 2. again, it doesn’t break the loop and go back into the regular sequence. can someone please help me out with this?
thanks,
traffic
here’s the actionscript as it appears in my flash file:
delay = 3000;
//-----------------------
function loadXML(loaded) {
if (loaded) {
xmlNode = this.firstChild;
image = [];
description = [];
total = xmlNode.childNodes.length;
for (i=0; i<total; i++) {
image* = xmlNode.childNodes*.childNodes[0].firstChild.nodeValue;
description* = xmlNode.childNodes*.childNodes[1].firstChild.nodeValue;
}
firstImage();
} else {
content = “file not loaded!”;
}
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load(“images.xml”);
// ///////////////////////////////////
listen = new Object();
listen.onKeyDown = function() {
if (Key.getCode() == Key.LEFT) {
prevImage();
} else if (Key.getCode() == Key.RIGHT) {
nextImage();
}
};
Key.addListener(listen);
btn_previous.onRelease = function() {
prevImage();
};
btn_next.onRelease = function() {
nextImage();
};
// ///////////////////////////////////
p = 0;
this.onEnterFrame = function() {
filesize = picture.getBytesTotal();
loaded = picture.getBytesLoaded();
preloader._visible = true;
if (loaded != filesize) {
preloader.preload_bar._xscale = 100*loaded/filesize;
} else {
preloader._visible = false;
if (picture._alpha<100) {
picture._alpha += 10;
}
}
};
function nextImage() {
if (p<(total-1)) {
p++;
if (loaded == filesize) {
picture._alpha = 0;
picture.loadMovie(image[p], 1);
desc_txt.text = description[p];
picture_num();
slideshow();
}
}
}
function prevImage() {
if (p>0) {
p–;
picture._alpha = 0;
picture.loadMovie(image[p], 1);
desc_txt.text = description[p];
picture_num();
}
}
function firstImage() {
if (loaded == filesize) {
picture._alpha = 0;
picture.loadMovie(image[0], 1);
desc_txt.text = description[0];
picture_num();
slideshow();
}
}
function picture_num() {
current_pos = p+1;
pos_txt.text = current_pos+"/"+total;
}
function slideshow() {
myInterval = setInterval(pause_slideshow, delay);
function pause_slideshow() {
clearInterval(myInterval);
if (p == (total-1)) {
p = 0;
firstImage();
} else {
nextImage();
}
}
}
OK two more quickie bonus problems:
- the next button won’t advance from the last slide to the first and the previous won’t go from first to last slide – is there a way to enable this functionality?
- is there a way to add a “pause”/“play” toggle button? can someone show me the light?
thanks again,
traffic