Tweening bleibt hängen...

GuenniFD

Mitglied
Hallo zusammen und entschuldigung, dass ich mich nach so kurzer Zeit schon wieder mit einer Frage melde, aber ich hab dazu noch nichts gefunden...
Ich habe eine Szene in der es je nach rollOver 3 unterschiedliche Animationen lädt, in der Form, dass es einfach an eine bestimmte Stelle in der Zeitleiste springt.
Jetzt funktioniert das alles, wenn ich da normal drüber gehe, wenn ich jedoch schnell über 2 Grafiken mit der Maus drüber springe, dann hängt sich das Tweening auf. Es wird zuerst das Tweening von Grafik1 ganz kurz ausgeführt (1Bild oder so) und dann wird das Tweening zu Grafik2 angestoßen und bleibt beim 2ten Bild stehen.
Es passiert auch, wenn man sehr schnell in die Grafik reinfährt und gleich wieder raus, dann wird rollOver wahrgenommen, aber rollOut nicht, gibt es da einen Trick das zu behandeln?
Ich glaub ich hab den falschen Ansatz gemacht, weil ich glaube wenn man alles in einzelne MC packt würde es sicherlich besser klappen, oder!

Vielen Dank im Voraus.
Schönen Tag noch
MFG
Günni
 
Hi,

dieses Problem tritt manchmal bei Kombinationen mit gotoAndStop in Schlüsselbilder, in denen eine "stop"-Aktion steht auf. Auch unglückliche Zeitleiste-AS-Vermischungen können der Grund dafür sein. Poste bitte mal Deine Datei, dann lässt sich der Fehler bestimmt schnell auffinden.

Gruß
.
 
Hallo,

rollOver bzw rollOut-Events, so jedenfalls meine Erfahrung, sehr genau und werden auch mit schnellen Mausbewegungen exakt gesendet. Exportier mal mit einer höheren Framerate, möglich, dass sich dadurch diese Aufhänger von selbst erledigen.
Ich denke aber, du hast sonst wo nen Fehler gemacht. Am Besten wärs, wenn du einfach mal deine *.fla posten würdest.

gruss

EDIT: Argh, Tobi nicht so schnell ;)
 
Jo habe sie hochgeladen, aber da herrscht noch ein wenig chaos.
Schonmal Danke für die Hilfe.
Kann schon sein, dass ich da mit den Aktionen ein wenig durcheinander geworfen habe, hatte vor der Anfertigung recht lang Pause gemacht ;-)

Danke für die Hilfsbereitschaft
MFG
Günni
 

Anhänge

  • step7_kuchen.zip
    21,8 KB · Aufrufe: 13
Hi,

ja, Du hast Dich an einigen Stellen mit den Ereignissen vertan (zum einen das was ich angemerkt hatte: eine play-Aktion auf einem Frame, in dem ein stop steht, führt zu unvorhergesehenen Ergebnissen; zum anderen unterschiedliche - z.T. falsche - Aktionsziele auf den verschiedenen Schlüsselbildern).

Ich kann Dir nur raten, solche Animationen nicht per Tweening auf der Hauptzeitleiste zu erledigen - neben den beschriebenen Problemen, treten in der Regel noch weitere auf (z.B. schwer zu unterdrückendes "Springen" bei schnellen Hover-Wechseln). Das was Du erreichen willst, lässt sich auch prima mit drei MovieClip und einem kleinen Prototype erledigen (siehe Anhang), ohne dass auch nur eine Zeitleiste bemüht werden müssten ;)

Gruß
.
 

Anhänge

  • step7_kuchen.zip
    9,5 KB · Aufrufe: 18
Danke!
Ich hab auch später gemerkt, dass man das nicht so macht, aber da war es schon ein wenig weit. So schnell umbauen wie du das kannst, kann ich leider noch nicht.
Du hast jetzt so ziemlich alles mit AS gelöst, das sieht auch sehr gut aus. Ich dachte eigentlich man macht dann praktisch die Abläufe, die ich in der Zeitleiste hab, einfach in den entsprechenden Movieclip, aber da hat ja wie gesagt das kopieren nicht so geklappt und dann wäre es nicht alles 100%ig mittig.
Wie kann ich bei deiner Version die Größe, beim rollOver ein wenig verkleinern, damit es im sichtbaren Bereich bleibt.
Oder vielleicht kannst du die 3 Parameter kurz mit jeweils einem Wort beschreiben (weil Programmierverständnis habe ich schon, will aber nix kaputt machen ;-) )
Vielen Dank nochmals für die Mühe!

edit:
Ich hab jetzt die Einstellungen zu der Größe der Teile hinbekommen, jetzt hätte ich noch eine Frage zum Alpha-Effekt.
Und zwar soll immer die aktive Seite auf 100% bleiben und die beiden anderen auf 75% runtergehen. Ist das bei dir integriert bzw. wie kann man es integrieren? da muss ich auf die jeweils anderen zwei px (x= 1 oder 2 oder 3) anwenden, oder?


MFG
Günni
 
Zuletzt bearbeitet:
Hallo,

ich hab mir Tobis Script mal angeschaut, die Parameter stehen für Folgendes:

ds: neue Grösse, auf die der Abschnitt skaliert wird (_xscale, _yscale)
da: neuer Transparenz-Wert, die der rollOver-Abschnitt bekommt (_alpha)
spd: Animationsgeschwindigkeit

Wenn du nun deine 3 MC's mit je einer Transparenz von 75% ausstattest, beim rollOver für den Parameter "da" 100 setzst, beim rollOut aber wieder auf 75, dann solltest du den von dir gewünschten Effekt erreichen.

gruss

EDIT: Ahso du möchtest, dass die "inaktiven" Buttons beim rollOver eine alpha-Änderung vollziehen. Hab ich falsch gelesen. Solltest du aber mit der Kenntnis über die Bedeutung der Parameter auch hinkriegen ;).
 
Zuletzt bearbeitet:
Hi,

Du müsstest dem Prototyp des aktuellen Clips einen Alphawert von 100 mitegeben, und die Funktion auch für die anderen beiden mit einem niedrigen Alphawert aufrufen:
Code:
for (var i=1; i<=3; i++) {
    obj = this["p" + i];
    obj.idx = i;
    obj.onRollOver = function() {
        this.scale(130, 100, 4); // der erste Parameter ist die Zielgöße in %
        for (var h=1; h<this.idx; h++) {
            this._parent["p" + h].scale(100, 75, 4); // der zweite Parameter ist die Alphatransparenz
        }
        for (var h=this.idx + 1; h<=3; h++) {
            this._parent["p" + h].scale(100, 75, 4);
        }
    }
    obj.onRollOut = function() {
        this.scale(100, 100, 5);
        for (var h=1; h<this.idx; h++) {
            this._parent["p" + h].scale(100, 100, 5);
        }
        for (var h=this.idx + 1; h<=3; h++) {
            this._parent["p" + h].scale(100, 100, 5);
        }
    }
}

Gruß
.
 
Danke, im Moment habe ich es so, dass nach dem rollOut es auf 75% geht, das ist auch in Ordnung und hat ja den gewünschten Effekt, aber halt nur, wenn man schonmal über alle 3 Grafiken gefahren ist.
Ich hatte erstmal probiert und folgenden Code:
Code:
MovieClip.prototype.fade = function(ds, da, spd) {
	this.onEnterFrame = function() {
		this._xscale += (ds - this._xscale) / spd;
		this._yscale = this._xscale;
		var angx = Math.sin(this.ang * Math.PI / 180);
		var angy = -Math.cos(this.ang * Math.PI / 180);
		this._x = this.bx + (angx * 50 * (this._xscale - 100) / 100);
		this._y = this.by + (angy * 50 * (this._xscale - 100) / 100);
		this._alpha += (da - this._alpha) / spd;
		if (Math.abs(ds - this._xscale) < 1 && Math.abs(da - this._alpha) < 1) {
			this._xscale = this._yscale = ds;
			this._alpha = da;
			delete this.onEnterFrame;
		}
	}
}

for (var i=1; i<=3; i++) {
	var obj = this["p" + i];
	obj.bx = obj._x;
	obj.by = obj._y;
	obj.ang = (i - 1) * 120 - 60;
	obj.onRollOver = function() {
		this.fade(120, 100, 6);
	        for (var h=1; h<this.idx; h++) {
                    this._parent["p" + h].fade(100, 75, 6); 
                }
                for (var h=this.idx + 1; h<=3; h++) {
                    this._parent["p" + h].fade(100, 75, 6);
                }
	}
	obj.onRollOut = function() {
		this.fade(100, 70, 8);
	}
}
ich habe den Code so genommen (habe scale in fade in den neuen schleifen geändert),
aber wenn ich die Schleifen reinmache passiert gar nichts. Ist da was gravierendes falsch?
 
Hi,

Du hast den MovieClips keine ID zugewiesen, wie ich es in meinem vorherigen Posting getan habe (idx) - die wird benötigt, um den aktuellen Clip von den anderen beiden zu unterscheiden.

Wenn Du überprüfen willst, ob schon einmal alle MCs gehovert sind, kannst Du das in Variablen auf der Zeitleiste festhalten.

Im Moment bin ich unterwegs und habe keine Flash-Umgebung zur Hand (daher auch die Abweichungen zwischen meinem Beispiel und dem letzten Posting), aber vielleicht findet sich ja jemand anderes, der Dir auf die Sprünge helfen kann.

Gruß
.
 
Zurück