Slideshow mit Endlosschleife

sirina

Mitglied
Hallo!

Ich arbeite mich seit ein paar Tagen in Flash MX ein und stehe nun vor einem (wohl kleinem) Problem. Ich habe in diesem Forum schon einiges gelesen, aber nichts, was mich näher gebracht hat :( .

Hier nun mein Problem:
Ich habe eine Slideshow.
Klicke ich auf den "Next"-Button, wird das nächste Bild angezeigt. Klicke ich auf den "Previous"-Button, wird das vorige Bild angezeigt.
Beispiel:
Ich befinde mich momentan bei Bild 1. Klicke auf "Next" und sehe Bild 2. Klicke nun wieder auf "Next" und sehe Bild 3. Klicke ich nun auf "Previous" sehe ich wieder Bild 2. Klicke ich erneut auf "Previous" sehe ich wieder mein Bild 1.

Ich hoffe, das ist soweit verständlich.


Nun zu meinem Problem.

Ziel ist es später die Bilder von extern einzubinden. Daher hab ich eine Anzahl von Bildern = n. Es sollen also beliebig viele Bilder eingebunden werden können.
Somit ist mir die Anzahl der Bilder noch nicht bekannt.

Wenn ich jetzt vor mir das Bild 1 hab und auf "Previous" klicke soll das letzte Bild angezeigt (z.B. Bild3 - wenn im Moment nur 3 Bilder da sind). Wenn ich dann erneut auf "Previous" klicke, sehe ich Bild 2.
Soweit so gut. Funktioniert alles mit Hilfe von gotoAndPlay(Frame);

Und genau hier liegt mein Problem. Es ist ja nicht bekannt, vieviele Frames es gibt und trotzdem soll er zum letzten Springen - also eine Schleife.
Es funktioniert prima wenn ich bei Bild 3 auf "next" klicke - da springt er automatisch zu Bild 1. Da könnten auch 1000 Bilder sein und er würde nach dem letzten Bild (dem 1000sten) wieder zu Bild 1 springen. Nur andersrum gehts nicht (von Bild 1 auf Bild 1000) :(.


Der Next-Button hat folgende Funktion:
PHP:
on (release) {
currentSlide = currentSlide + 1;
play();
}
der "Previous"-Button hat diese Funktion:
PHP:
on (release){
currentSlide = currentSlide - 1;
gotoAndPlay("slide"+currentSlide);
	if(currentSlide == 0){
		gotoAndPlay(3);
	}
	if(currentSlide == -1){
		gotoAndPlay(2);
	}
	if(currentSlide == -2){
		gotoAndPlay(1);
	}
}
Kurze Erläuterung zur "Previous"-Funktion:
beim start der Animation ist currentSlide = 1.
Wenn ich nun auf "Previous"-Klicke ist beim Bild 3 currentSlide = 0 und er soll zum Frame 3 springen und somit Bild 3 anzeigen.
Die restlichen sind dann genauso.

Ich glaub sowieso, dass das eher ein "Hack" ist - aber es funktioniert :-).

Frage:
Kann mir vielleicht jemand helfen, wie ich diese Previous-Funktion umschreiben muss, so dass es egal ist, ob ich weiß oder nicht, wieviele Bilder eingebunden sind oder nicht und er immer vom ersten zum letzten Bild springt, sobald ich beim ersten Bild auf previous klicke?

Ich wäre darüber sehr dankbar und hoffe, dass mein Geschreibsel hier verständlich ist. Wie gesagt, ich beschäftige mich erst seit wenigen Tagen damit (3 um genau zu sein) und komm hier an dieser Stelle einfach nicht weiter.

Vielen Dank schonmal!

Liebe Grüße, sirina
 
Zuletzt bearbeitet von einem Moderator:
Hallo!

Du hast dein Problem aber sehr ausfüphrlich beschrieben. Die Lösung ist denkbar einfach, dein Codeschnipsel zwar auch, aber meiner Meinung (und meines Wissens, B...) nach gibt es einen einfacheren Weg:

PHP:
on (release){
lastFrame = _root.slideshow._totalframes; // Wenn du für die Slideshow 
                                                                              // nen MC hast....
currentSlide = currentSlide - 1;
gotoAndPlay("slide"+currentSlide);
if(currentSlide == 0){
gotoAndPlay(lastFrame); // Also zum letzten Bild
currentSlide = lastFrame; // Von jetzt an kann normal weitergeslidet werden
}
}

(Damit unser Forum schön bleibt:Codeschnipsel immer in so ein "PHP-Ding". Dient der Übersichtlichkeit.)

Mfg
loeff
 
Hallo loeffellutscher!

Erstmal möchte ich mich für deine schnelle Antwort bedanken.

Deine Codezeilen leuchten mir auch ein - nur leider funktionieren sie nicht wie geplant. Wenn ich bei Bild 1 bin und auf "Previous" klicke, geht er nicht zurück zum letzten Bild sondern bleibt bei Bild 1.
Aus diesem Grund zeig ich dir mal, wie das ganze bei mir aufgebaut ist:

Ich habe 4 Layer:
1. Actions
2. Background
3. Buttons
4. Images

Im Layer "Background" hab ich nur optische Dinge vorgenommen, daher nix wichtiges.

Zum Layer "Images"
hier habe ich drei aufeinanderfolgende Keyframes.
Im ersten Keyframe ist Bild1,
im zweiten Keyframe ist Bild2 und
im dritten Keyframe ist Bild3.

Im Layer "Buttons" sind der "Previous" und der "Next" -Button festgelegt.
Der Previous-Button nun die von dir vorgeschlagene Funktion. Der Next-Button ist unverändert (siehe oben)

Im Layer "Actions" sind ebenfalls drei aufeinanderfolgende Keyframes und ich habe folgende Einstellungen vorgenommen:
Im Frame1 hab ich folgende action hinterlegt:
PHP:
stop();
currentSlide = 1;

Frame 2 und 3 nur noch:
PHP:
stop();

das stop(); soll lediglich bewirken, dass flash nicht durchläuft, sondern bei jedem Bild anhält.

Das wars. Mehr habe ich nicht eingestellt oder festgelegt.
Nur diese 4 bzw. 5 Code-Segmente.

Hast du eine Antwort auf dieses Problem? Wär echt supernett.


Vielen Dank schonmal im Voraus.

Gruß, sarina
 
Also am besten postest du mal die fla ... dann können wir dir besser helfen. Ansonsten: Pack die 3 Keyframes mit den Bildern in einen MC!
 
Hallo Loeffellutscher!
Ich habe das Problem soeben lösen können.
Ich musste in der Zeile mit dem lastFrame = einfach "slideshow" weglassen und nun funktionierts prima!
PHP:
lastFrame = _root._totalframes;


Jetzt kann ich mich den nächsten Aufgaben / Problemen stellen :-)
Aber voher alles schön fein säuberlich dokumentieren, damit es andere später nachempfinden können, was ich hier so zusammenbastle ;)


Vielen Dank nochmals!

Liebe Grüße, sirina
 
Hallo Loeffellutscher,

habe ich auch brav angewendet - musste es nur ein wenig abwandeln, aber jetzt passts :) .

Vielen Dank nochmal
 
Zurück