Buttons zum Scrollen und Verzögerung von AS

Mahzuni

Mitglied
Halli Hallo :)

da bin ich wieder, nach einer kurzen Prüfungspause :)

zuersteinmal hier das bisher erreichte:


mit freundlicher Unterstützung von Tobias Menzel :)

kurze Beschreibung:
Es geht darum Koordinaten von Punkten aus einer XML Datei auszulesen und diese zu zeichnen. Jeweils pro Zeitabschnitt 1 Bild (also doch keine richtig Animation)
Dazu kommen noch Verbindungslinien zwischen den Punkten die auch in der XML Datei angegeben sind (z.B. zwischen Knoten n und k soll eine Verbindung sein)

das ganze klappt auch ganz wunderbar bis jetzt (die Werte sind aus der Luft gegriffen, sieht vielleicht ein bisschen komisch aus :) )


nun möchte ich dem Ganzen noch einen Scrollbalken spendieren, also um zwischen den Zeitabschnitten hin und her springen zu können.
Dazu sollte dann auch ein Play/Pause Button da sein damit man die "Animation" pausieren kann.

So... da ich nicht genau weiss wie ich umständlich so ein Scrollbalken zu machen ist, dachte ich mir, man könnte auch einfach 4 Buttons machen, 2 um jeweils 10 Frames hin und her zu springen und 2 um je 1 Frame hin und her zu springen. Und eben noch mein Pause Button.
Doch nun mein Problem. Ich hab ja keine richtigen Frames. Das Ganze läuft ja in AS in einer rekursiven Funktion ab.
Da die Koordinaten in einem Array abgespeichert sind, mit dem index (current), dachte ich mir man könnte dieses current beeinflussen mit den Buttons.. doch nun stellt sich die Frage: Wie kann ich die Variable current mit einem Button beeinflussen

Ich merke gerade dass da ein Button schon drin ist. Ich hatte da eine globale Variable beginn im Movie. Und hatte eine While Schleife im AS Code. War eigentlich gedacht, dass wenn beginn auf true ist, der anfangen soll zu wackeln.. hat aber nicht geklappt :(
also while(!beginn){} ne endlos Schleife .. bis der User auf den Button drückt

---------

Zum anderen hab ich in meinem Movie eine kleine Verzögerung eingebaut damit es nicht allzuschnell abläuft, aber ich glaube da gibt es bestimmt eine schönere Methode das ganze zu Verlangsamen...
Meine Methode:
for (var i = 0; i<timer; i++) {} // wobei timer ne Zahl um die 30000 ist...


ok.. ich hoffe mein Text war nicht zu lang :)

MfG Mahzuni
 
Hi,

lass bloß die Finger von langen bzw. Endlosschleifen, wenn es um Verzögerungen geht. ;)

Schau mal in der Referenz nach "setInterval" - damit kannst Du Funktionen Zeitverzögert ausführen lassen.

Gruß
.
 
setInterval ist eigentlich genau das was ich brauche.. aber irgendwie funktioniert das nicht so wie es soll.. oder besser gesagt ich versteh deinen "prototype" noch nicht ganz
Code:
MovieClip.prototype.moveNext = function() {
..
this.moveNext();
}

das ist doch eine rekursive Funktion oder nicht? die ruft sich immer wieder selber auf.
Wie tu ich nun dieses setInterval da hineinbekommen?

irgendwie versteh ich das vorne und hinten nicht.. wenn das da oben ne rekursive Funktion ist.. dann müsste sich doch nur ein Punkt bewegen... aber es bewegen sich alle...

function go() {
	for (var i in sprite) {
		sprite[i].moveNext();
	}

hier wird ja die Funktion moveNext für den Punkt i ausgeführt. Wenn man nun in moveNext ist und der sich ständig selbst aufruft.. dann hängt man ja die ganze zeit am ersten punkt fest.. und der bewegt sich dann schön...

(Flash ist doch nicht so einfach wie gedacht :) )

Gruss Mahzuni
 
Zurück