Animation pausieren lassen...

calimera

Mitglied
Hi,

Habe von Datic ein super Skript bekommen welches Daten aus einer Xml Datei ausliest (Bild und Text). Dieses Skript hab ich auch erfolgreich modifiziert und erweitert jedoch komme ich bei einer Sache nicht weiter:

Ich möchte gerne meine Animation anhalten für kurze Zeit und dann weiterlaufen lassen. Verschiedenste Dinge habe ich dazu schon probiert, setIntervall verursacht das die Animation abbricht und von vorne anfängt, so wie ich es verstanden habe existiert bei AS auch keine sleep oder break oder wie auchimmer vorhandene Funktion die man verwenden kann.

Ein weiteres Problem welches ich immer wieder in AS habe ist das ich nie genau weiss wohin ich solche Funktionen oder Methoden schreiben soll da man sich ja nicht genau Fehlermeldungen ausgeben kann, entweder es läuft oder halt nicht!

Der link zu dem Skript von Datic bzw der fla Datei ist hier

ich kann auch den code so hierherein schreiben jedoch ist eine datei wohl immer besser! Wäre super wenn mir jemand mal erklären könnte wie ich an so ein Problem herangehe

Vielen Dank schonmal
 
Hi,

für die Animation sorgt die onEnterFrame-Methode in der Funktion "startAni" (MC "entries"):
Code:
function startAni() {
	this.onEnterFrame = function() {
		for (var i=0; i<amt; i++) {
			entry[i]._y -= speed;
			if (entry[i]._y < -entry[i]._height) drop(i);
		}
	}
}
Wie Du siehst, werden alle MovieClips pro Frame um einen Pixelwert verschoben, der in der Variable "speed" steht. Um die Animation nun zu pausieren, brauchst Du eigentlich nur die Variable "speed" kurzzeitig auf 0 zu setzen.

Andere Möglichkeit: Lösche zum Pausieren die onEnterFrame-Methode, indem Du eine zusätzliche Funktion "stopAni" einbaust:
Code:
function stopAni() {
    delete this.onEnterFrame;
}
Mit einem erneuten Aufruf von "startAni" kannst Du die Bewegung wieder aufnehmen.

Gruß

P.S.: Deine zweite Frage habe icht nicht ganz verstanden: Prinzipiell kannst Du Code nur auf eine Zeitleiste oder ein Objekt (MovieClip, Schaltfläche) setzen. Im letzteren Fall sind das ausschließlich Ereignisse, z.B. on(...), onClipEvent(...). Setzt Du Aktionen direkt auf ein Symbol, bekommst Du eine Fehlermeldung. Umgekehrt genauso, wenn Du Symbolereignisse in einer Zeitleiste definierst ...
.
 
Super Danke, hab grad mal gestöbert was du hier so alles gepostest hast und frage mich was die dir bezahlen damit du uns Laien so gut versorgst!

Respekt von mir ... ;-)

Wenn ich die Animation immer so anhalten will das der text dann in der Mitte steht, ist es sinnvoll das mit einer Zeitangabe zu machen oder eher mit Positionsangaben? Verstehe nicht genau wie der Film sonst wissen soll wann er stoppt und wie lange.

Das Problem welches ich immer wieder mit AS habe, ist dass man nicht wie z.B. in Java gute Debug Funktionen hat die einem anzeigen wo der Fehler liegt, für mich ist es oft ein: Na ja dann schreib ich es eben mal dahin und gucke was passiert! Desshalb wusste ich bei deinem Skript auch nicht genau wo ich anfangen soll!

Na ja, nochmal Danke für deine so schnelle Hilfe!
 
Zuletzt bearbeitet:
Wenn ich die Animation immer so anhalten will das der text dann in der Mitte steht, ist es sinnvoll das mit einer Zeitangabe zu machen oder eher mit Positionsangaben?
Letzteres:
Code:
function pauseAtNext(posi) {
	this.onEnterFrame = function() {
		for (var i=0; i<amt; i++) {
			entry[i]._y -= speed;
			if (entry[i]._y < -entry[i]._height) drop(i);
			if (Math.abs(entry[i]._y - posi) <= speed) stopAni();
		}
	}
}
Der Funktion übergibst Du die gewünschte Stop-Position des nächsten hochfahrenden Eintrags. Soll der Eintrag z.B. oben anhalten, so wäre das 0.

Gruß
.
 
Das Problem welches ich immer wieder mit AS habe, ist dass man nicht wie z.B. in Java gute Debug Funktionen hat die einem anzeigen wo der Fehler liegt, für mich ist es oft ein: Na ja dann schreib ich es eben mal dahin und gucke was passiert!

Also in Flash MX 2004 bekommt man Fehlermeldungen, sobald man den Film testet. Es wird dabei die Ebene und der Frame angezeigt und vieles mehr... Außerdem kann man vorher noch die Syntax überprüfen lassen.
 
Zurück