Rückwärts abspielen lassen?

H

Hawaii

Also, folgendes Problem:

Ich habe ein Menü gemacht und lasse ein paar Buttons/Links ins Bild fliegen (mitm bissel fading und so).
Jetzt will ich, sofern ich auf einen anderen Button klicke, dass diese Animation rückwärts läuft und dann erst die neuen Buttons kommen.
Mein Problem dabei ist, dass ich nicht weiss, wie ich die Animation auf Befehl rückwärts laufen lassen kann. Tja, wie macht man das also?
Ich benutze übrigens Flash 5.

Nochmal kurz wie ich mir das vorstelle: Animation-> Menü-> Drücke auf Knopf-> Anfangsanimation wird rückwärts abgespielt

Hab mir "Suchen" so was ähnliches gefunden. Das Script geht aber nicht und überhaupt.
 
Zuletzt bearbeitet von einem Moderator:
Hi

die frage taucht ja in regelmässigen abständen immer wieder auf.

Die Vorgehensweise ist ja eigentlich einfach: man kombiniert den Befehl MovieClip.prevFrame() mit einem onEnterFrame-Event und fertig.

Will man aber eine MovieClip.rewind() Methode wirds ein bisschen tricky. Hier mein Vorschlag.

Code ins erste Frame und 2 Buttons auf die Bühne.

PHP:
// Methode zum Rückwärtsabspielen eines mc 
// warum ?
// weil flash zwar eine Methode MovieClip.play() kennt,
// nicht aber eine Methode MovieClip.rewind().
// Deshalb schreiben wir sie selbst
MovieClip.prototype.rewind = function() {
	_root.x = this; // this is der mc auf den die methode angewendet wird
	_root.createEmptyMovieClip("a", 2); // gibt uns den onEnterFrame-Event
	a.onEnterFrame = function() {
		_root.x.prevFrame();
		if (_root.x._currentframe == 1) { 
		//muss weg, weil er die play-Methode ausschaltet
			delete _root.a.onEnterFrame;
		}
	};
};
// Play Button
play_btn.onRelease = function() {
	delete _root.a.onEnterFrame // wenn der nicht weg ist, heben
	// sich play() und rewind() gegenseitig auf.
	tween_mc.play(); // tween_mc ist ID des MC
};
// Rewind Button
rewind_btn.onRelease = function() {
	tween_mc.rewind();
};



wäre an einer eleganteren Lösung sehr interessiert.

gruss skyla
 
Na wenn das mal kein schönes Beispiel für OOP im Gebrauch ist. :)

Schön gemacht, erspart das manuelle MC-Gehandhabe etc...dachte vielleicht selbst noch über ein Entfernen des rewind-MC mit dem enterFrame-Event nach, aber dürfte auch so super zu gebrauchen sein.

Sehr schön,
Geist

P.S.: Nachtschwärmer unter sich ;)
 
Ein Lob von hoher Stelle und noch zu später Stunde::) freu freu

hatte hier so ein kleines scoping-problem
PHP:
    _root.x = this; // this is der mc auf den die methode angewendet wird
    _root.createEmptyMovieClip("a", 2); // gibt uns den onEnterFrame-Event
    a.onEnterFrame = function() {
        _root.x.prevFrame();


hab dann die referenz auf den mc, auf den die methode rewind() letztendlich angewendet werden soll in der variable x auf _root abgelegt, was aber mehr wie ein workaround aussieht. kennst du keine elegantere lösung ?
 
Hi

war wohl gestern nicht mehr so frisch (der weihnachtsstress).

meine rewind() methode war ja wohl eine für die galerie nutzlose scripte...

es geht nämlich auch ohne
PHP:
// Play Button
play_btn.onRelease = function() {  //id des play-buttons
	delete tween_mc.onEnterFrame;
	tween_mc.play(); // tween_mc ist ID des MC
};
// Rewind Button
rewind_btn.onRelease = function() {
	tween_mc.onEnterFrame = tween_mc.prevFrame;
};


bemerkenswert daran ist folgendes: bei prevFrame werden die Klammern weggelassen, weil es sich nicht um einen aufruf handelt, sondern um eine zuweisung.
;)
 
Zuletzt bearbeitet:
Muss ich das jetzt verstehen?

:confused:

Ohne *was* läuft die Sache auch?
Das was du aus deinem Script zitiert hast, ist ja allemal notwendig, worauf beziehst du dich da genau?

Und warum soll die ganze Methode müllig sein?

Geist
 
weil ich mit
PHP:
// Play Button
play_btn.onRelease = function() {  //id des play-buttons
    delete tween_mc.onEnterFrame;
    tween_mc.play(); // tween_mc ist ID des MC
};
// Rewind Button
rewind_btn.onRelease = function() {
    tween_mc.onEnterFrame = tween_mc.prevFrame;
};

meine rewind() auf den Müll werfen kann. brauchts nicht mehr.
Hab mich zuerst gefragt, wieso es keine built-in rewind() gibt...aber die braucht es gar nicht. man muss ja nur die prevFrame dem onEnterFrame-ereignis zu weisen.


:) (hoffe die smiles nervern dich nicht langsam...)
 
Huch stimmt ja... :eek:

Mh, MX macht's halt möglich dank dynamischer Eventsteuerung - wow, auf die Idee war ich ja noch gar nicht gekommen.

Geist,
selbst smilievernarrt ;)
 
Zurück