AS Button Animation

versuch13

Erfahrenes Mitglied
Hi,

also, ich möchte gerne Buttons per ActionScript animieren. Und zwar so, dass beim RollOver eine Animation beginnt, und beim RollOut die Animation zurückläuft.

Zum besseren Verständnis, hier mal ein Link:

http://www.bwsafaris.com/

Also so wie es auf dieser Seite in der Hauptnavigation funktioniert.

Ich habe es auf die Art versucht, eine Animation erstellt, z.B. Frame 10-30, und die selbe rückwarts im Frame 31-51. Im RollOver wird Frame 10-30 abgespielt und gestopt, beim RollOut wird Frame 31-51 abgespielt. Das funktioniert auch, nur nimmt man den Mauszeiger dann bei Frame 20 vom MC runter, springt die Animation ja zu Frame31 und läuft ans Ende.


Ich habe ein Script gefunden mit dem es anscheinend funktionieren sollte, nur bekomme ich das leider nicht hin. Hier das Script:
Code:
 onClipEvent (enterFrame) { 
    // if the mouse IS over the clip ... 
    if (this.hitTest(_root._xmouse, _root._ymouse, true)) { 
 	  // if the last frame of the tween hasn't been reached... 
 	  if (this._currentframe<this._totalframes) { 
 		 // keep playing the next frame to the last and stop... 
 		 this.nextFrame(); 
 	  } 
 	  // if the mouse is NOT over the clip 
    } else { 
 	  // if we're past the first frame of the tween... 
 	  if (this._currentframe>1) { 
 		 // play the previous frame until it reaches frame 1 and stop... 
 		 this.prevFrame(); 
 	  } 
    } 
 }

Ich verstehe das Script auch nicht wirklich. Wäre sehr dankbar wenn mir jemand eine ganz einfache Lösung für das Problem liefern könnte. Z.B. man hat einen reinen Text Button, der beim RollOver von links nach rechts mit einem farbigen Hintergrund hinterlegt wird o.ä.

Vielen Dank im vorraus.

Gruß
 
Hi,

dieses Script macht nur Sinn, wenn der Clip beim rollOut wirklich rückwärts abgespielt werden soll. Du hast aber anscheinend einen Extrabereich auf de Zeitleiste für den rollOut festgelegt.

In diesem Fall musst Du dafür sorgen, dass die Animation zunächst weiterläuft (und bei Bedarf auch einen "Loop" vollführt) und erst bei dem jeweiligen "Zielframe" anhält (siehe Anhang).

Gruß
.
 

Anhänge

Hi Datic,

danke für die Datei, das bringt mich auch schon weiter. Nur war das jetzt leider auch nicht genau das was ich meinte. Wahrscheinlich habe ich mich nicht deutlich genug ausgedrückt. Also, du hast das aber schon richtig erkannt denke ich, ich geht mir darum, dass wenn man den Mauszeiger vom Button nimmt, die Animation rückwärts abgespielt wird, und zwar von dem Frame in dem ich sich in diesem Moment befindet.
Z.B. : Man hat eine Animation von Frame 10-30, wenn man nun den Mauszeiger über den Button bewegt, beginnt die Animation also bei Frame 10 und spielt solange man Over ist bis zu Frame 30 und stopt dann dort. Nimmt man den Mauszeiger runter, wird Frame 30-10 rückwärts abgespielt. Und jetzt das wesentliche, nimmt man nun den Mauszeiger vom Button runter wenn die Animation sich z.B. erst auf Fram 20 befindet, soll Frame 20-10 rückwärts laufen.
Ist das nicht mit dem Script was ich oben gepostet habe möglich?

vielen Dank.

gruß
 
Ja, sorry, dann hatte ich es wohl doch nur zu umständlich beschrieben. Aber dein anderes Beispiel war nicht ganz umsonst, ist auch eine nette Sache!

So, nun habe ich das versucht bekomme es aber immer noch nicht hin, meine Flash Kenntnisse sind halt auch nicht die besten.
Ich hänge einfach mal meinen Versuch an, wäre nett wenn du mal drüber schauen könntest. Ich kann mit den Fehlermeldungen leider nicht viel anfangen.

Danke nochmal. Gruß
 
Asche auf mein Haupt: Das kommt davon, wenn man aus dem Kopf etwas postet -> man vergisst u.U. die Hälfte (zusätzlich sind mir zwei überflüssige Klammern "rausgerutscht"). Richtig muss es natürlich heissen:
PHP:
gotoAndStop(10);

this.onRollOver = function() {
	trace("over");
	this.onEnterFrame = function() {
		if (this._currentframe < 30) {
			trace(_currentframe);
			nextFrame();
		} else {
			delete this.onEnterFrame;
		}
	}
}

this.onRollOut = this.onReleaseOutside = function() {
	this.onEnterFrame = function() {
		if (this._currentframe > 10) {
			prevFrame();
		} else {
			delete this.onEnterFrame;
		}
	}
}
(Das gotoAndStop(10) habe ich mal eingefügt, damit Du beim erstel rollOver nicht zu lange auf die Animation warten musst).

Gruß
.
 
Zurück