Movie umgekehrt abspielen

kamphi

Grünschnabel
hallo....

mach gerade einen anfahrtsplan bei dem es drei verschiedenen zooms gibt,und die übergänge durch shape-tweening animiert sind...bei meiner zoom-in-funktion haut alles super hin,nur bei zoom-out hätt ich gerne genau das umgekehrte...
also dass sich das movie rückwärts abspielt anstatt vorwärts...

gehts sowas?

gruss
kamphi
 
Hi,

das Rückwärtsabspielen von Zeitleisten ist kein Problem:
Code:
function playBackwards(timeline, to, loop) {
	if (timeline == undefined) timeline = this;
	var from = timeline._currentframe;
	if (to == undefined || !(to > 0)) to = 1;
	if (to > from) to = from;
	if (loop == undefined) loop = false;
	timeline.playBackwardsHelper.removeMovieClip();
	var helper = timeline.createEmptyMovieClip("playBackwardsHelper", timeline.getNextHighestDepth());
	helper.onEnterFrame = function() {
		if (timeline._currentframe > to) {
			timeline.prevFrame();
		} else {
			if (loop) {
				timeline.gotoAndStop(from);
			} else {
				delete this.onEnterFrame;
				this.removeMovieClip();
			}
		}
	}
}
Aufruf z.B.:
Code:
playBackwards(DeinMovieClip); // Spielt "DeinMovieClip" bis zum ersten Frame rückwärts ab

playBackwards(DeinMovieClip, 10, true); // Spielt "DeinMovieClip" bis zu Frame 10 rückwärts ab und springt dann wieder zum Frame, ab dem die Methode aufgerufen wurde

playBackwards(); // Spielt den aktuellen MovieClip rückwärts bis zum ersten Frame ab

Gruß
.
 
Zuletzt bearbeitet:
hab dieses script auch gerade noch verwendet.
Kann das sein das du dort eine Klammer zu viel reingemacht hast

PHP:
function playBackwards(timeline, to, loop) {
	if (timeline == undefined) timeline = this;
	var from = timeline._currentframe;
	if (to == undefined || !(to > 0)) to = 1;
	if (to > from) to = from;
	if (loop == undefined) loop = 1;
	timeline.playBackwardsHelper.removeMovieClip();
	var helper = timeline.createEmptyMovieClip("playBackwardsHelper", timeline.getNextHighestDepth());
	helper.onEnterFrame = function() {
		if (timeline._currentframe > to) {
			timeline.prevFrame();
		} else {
			if (loop) {
				timeline.gotoAndStop(from);
			} else {
				delete this.onEnterFrame;
				this.removeMovieClip();
			}
		}
	}
}

also so if (to > from) to = from; nicht so if (to > from) to = from);
kann das sein?
 
Feine "Rundumsorglos"-Funktion ... die muss ich mir merken. :)
Sollte
PHP:
if (loop == undefined) loop = 1;
aber nicht eher den Wert 0 haben? Denn wenn man nichts angibt, sollte ja vermutlich auch nicht geloopt werden.
Oder eben immer alle Parameter beim Funktionsaufruf definieren.

Grüße
Rena
 
Hi Rena,

tatsächlich sollte der Standardwert "false" eingesetzt werden - das kommt davon, wenn man "mal eben" eine Funktion eintippt, ohne sie zu testen. ;)

Gruß

P.S.: Die Funktion lässt sich noch erweitern, so dass z.B. Auch über den ersten Frame hinaus abgespielt werden kann (z.B. von Frame 30 über 1 und den letzten zu Frame 40). Sinn würde auch die Anlage als Prototype der MovieClip-Klasse machen - sobald ich dazu komme, poste ich ein Update.
 
hi
erstmals danke für die antworten...
doch check ichs noch nicht so ganz...auf meiner seite hab ich ein movieclip raufgetan, welches die einzelnen zooms des stadtplanes und dessen übergänge beinhaltet.beim drücken auf meinen "zoom in" button" funktioniert alles wunderbar,da ich die zeitleiste von einem label bis zum nächsten einfach abspielen lasse...
hab mir in meinem 1.frame im movieclip (actionslayer)diese rückwärtslauffunktion definiert,also zuerst gibt es ein stop(); und dann hab ich mir den code reinkopiert der das playBackwads definiert...
sobald ich aber auf einen "zoom out" drücke funktioniert es nicht...es tut sich eigentlich gar nichts...

hab dem button folgende action zugewiesen
on(release){
playBackwards("mein frame label",true);
};

ist wahrscheinlich ein dummer anfängerfehler,versteh aber nicht wo der fehler liegt...

gruss
kamphi
 
Hi,

der erste Parameter der Funktion erwartet kein Frame-Label, sondern eine Referenz auf den MovieClip, der abgespielt werden soll.

Gruß
.
 
hi...
ok,....muss das ganze also anders strukturieren...also mehrere movieclips machen,und diese mit dem instance-name steuern...oder...
kann ich auch eine framenummer als referenz angeben?

gruss
kamphi
 

Neue Beiträge

Zurück