geplaatst door: Blork
Ik heb een slideshow gemaakt in flash met actionscript dat via een xml de plaatjes binnenhaalt.
Dit werkt prima, je kunt door 2 knoppen voor en achhteruit navigeren in de slideshow.

Hier is de codae zoal die nu is:

slides_xml = new XML();
slides_xml.onLoad = startSlideShow;
slides_xml.load("slides.xml");
slides_xml.ignoreWhite = true;
//
// Show the first slide and intialize variables
function startSlideShow(success) {
if (success == true) {
rootNode = slides_xml.firstChild;
totalSlides = rootNode.childNodes.length;
firstSlideNode = rootNode.firstChild;
currentSlideNode = firstSlideNode;
currentIndex = 1;
updateSlide(firstSlideNode);

}
}
//
// Updates the current slide with new image and text
function updateSlide(newSlideNode) {
imagePath = newSlideNode.attributes.jpegURL;
slideText = newSlideNode.firstChild.nodeValue;
loadMovie(imagePath, targetClip);
}
//
// Event handler for 'Next slide' button
next_btn.onRelease = function() {
nextSlideNode = currentSlideNode.nextSibling;
if (nextSlideNode == null) {
break;
} else {
currentIndex++;
updateSlide(nextSlideNode);
currentSlideNode = nextSlideNode;
}
};
//
// Event handler for 'Previous slide' button
back_btn.onRelease = function() {
previousSlideNode = currentSlideNode.previousSibling;
if (previousSlideNode == null) {
break;
} else {
currentIndex--;
currentSlideNode = previousSlideNode;
updateSlide(previousSlideNode);
}
};

var goNext = function(){
       nextSlideNode = currentSlideNode.nextSibling;
{
currentIndex++;
updateSlide(nextSlideNode);
currentSlideNode = nextSlideNode;
}
};

Nu komt mijn vraag:

Ik wil graag dat de slideshow vanzelf gaat spelen, en om de 5 seconden naar de volgende dia gaat.
Daarbij wil ik dan 2 extra knoppen die als pauze en play knoppen fungeren.
Dus de slideshow moet vanzelf starten (of door druk op de play knop). Dan moet je dus kunnen pauzeren, en weer kunnen starten, en volgende en terug blijven kunnen kiezen.

Weet iemand hoe ik dit moet doen, ik heb al het een en ander geprobeerd, maar het wil steeds niet lukken. Ik kan wel een automatische play functie maken met setInterval, en dan een knop pauze door clearInterval aan te roepen maar als ik dan op de knop play die weer setInterval aanroept werkt de knop pauze niet meer....

ik hoop dat het een beetje duidelijk is allemaal.

wie helpt?  :cheesy:

flash actionscript timer/ start/ pauze vraagje
9 oktober 2007 - 13:32    reactie #1
geplaatst door: mvdg
Om een interval weer te kunnen uitzetten, moet je ergens onthouden hoe het interval heet.
Zie deze pagina van Adobe.

Dus:


// deze regel voert elke 5 sec de functie 'volgendeSlideFunctie' uit
autoSlide = setInterval (volgendeSlideFunctie, 5000 );

// als hij weer uit moet:
clearInterval(autoSlide);

Mitch Design : websites en interactieve toepassingen : http://www.mitchdesign.nl
flash actionscript timer/ start/ pauze vraagje
9 oktober 2007 - 14:27    reactie #2
geplaatst door: Blork
oke, ik heb nu op het einde van de Actionscript het volgende toegevoegd:

function volgendeSlideFunctie() {
         nextSlideNode = currentSlideNode.nextSibling;
{
currentIndex++;
updateSlide(nextSlideNode);
currentSlideNode = nextSlideNode;
}
}

start_btn.onRelease = function() {
var autoSlide;
autoSlide = setInterval( volgendeSlideFunctie, 3000 );
}

pauze_btn.onRelease = function() {
clearInterval( autoSlide );
}

De Play knop werkt. Deze laat om de 3 sec de volgende slide zien.
Maar de Pauze knop werkt niet. Ik heb het idee dat de clearInterval niet goed word aangeroepen ofzo..
wat doe ik fout?

flash actionscript timer/ start/ pauze vraagje
9 oktober 2007 - 15:22    reactie #3
geplaatst door: mvdg
Je doet het precies verkeerdom. Je maakt de variabele aan met
var autoSlide;

Op zich een goede gewoonte om variabelen lokaal te declareren. Zo kunnen ze niet in de war
raken met variabelen elders in je script.

Maar door die var is deze variabele alleen bekend binnen de functie start_btn.onRelease.
Binnen de functie 'pauze_btn.onRelease' is dus niet bekend wat 'autoSlide' nu eigenlijk is. En
hij kan dus ook niet uitgezet worden.

Je moet de regel 'var autoSlide;' dus gewoon weglaten. autoSlide is dan overal bekend en het
zal dan (neem ik aan) wel werken.

Mitch Design : websites en interactieve toepassingen : http://www.mitchdesign.nl
flash actionscript timer/ start/ pauze vraagje
9 oktober 2007 - 15:32    reactie #4
geplaatst door: Blork
Heej, het werkt!!

Heel erg bedankt. Ik was hier gisteren en vandaag al de hele dag mee bezig. Zoeken op internet, vanalles uitproberen, in de help van flash zelf zoeken...

Waar macfreak toch weer goed voor is he..

Bedankt mvdg voor de moeite en tijd!

flash actionscript timer/ start/ pauze vraagje
9 oktober 2007 - 16:34    reactie #5
geplaatst door: mvdg
Graag gedaan hoor. Als je te lang op iets zit, zie je soms de voor de hand liggende foutjes niet meer. Succes ermee.
Mitch Design : websites en interactieve toepassingen : http://www.mitchdesign.nl