mc-größe mit "friction" verändern

harrry

Erfahrenes Mitglied
Hallo,

ich habe mir da eine kleine Navigation gebastelt, bei der sich ein Hintergrund-MC jeweils an die eingelesene Textmenge anpaßt. Nun versuche ich, das Ganze - auch mit Hilfe von Code-Schnipseln aus diesem Forum - so hinzukriegen, dass der Hintergrund-MC nicht einfach... zack... auf die neue Größe umspringt, sondern mit "friction" auf die gewünschte Grüße anschwillt und dabei noch nachwippt - Ihr wißt schon.

Bin auch ziemlich weit, das Feld "wabert" auch in unterschiedlichen Größen auf, aber geht dann gleich wieder zu und das soll es ja nun nicht. Bestimmt ein schlimmer Denkfehler von mir - kann sich BITTE mal jemand das Skript kurz zur Brust nehmen und nachschauen, was man da noch ändern muss, damit das angewählte Feld bis zum nächsten Menüklick seine neue Größe behält?

Herzlichen Dank!
 

Anhänge

Hallo,

dein Skript leidet in der Tat unter drei wichtigen Denkfehlern.

1. Deine setMask-Funktion setzt die Positions- und Grössenwerte deiner Maske direkt auf die Zielwerte und erst danach wird die expand-Funktion aufgerufen, die ja im Prinzip animieren soll.

2. Der mask-Member mask.ds, wofür immer auch der Namen steht, wird in einer Initial-onEnterFrame, die auch gleich wieder überschrieben wird, auf 100 gesetzt, in deiner Berechnung verwendest du aber mask.ds als Zielwert.
Code:
mask.spd = (mask.spd+(mask.ds-mask._xscale)/mask.acc)/mask.dec;

Statt mask.ds müsstest du dort die neuen Werte einsetzen, auf die die Maske skaliert werden soll.

3. Wenn du mit _xscale bzw. _yscale arbeitest, musst du die neuen Grössenmasse auch prozentbasierend angeben, ergo umrechnen. Das hast du bisher wahrscheinlich gar noch nicht bemerkt, weil die Animation noch nie richtig funktioniert hat. Ausserdem verändert sich ja den Content nie in der Breite, doch sehr wohl in der Höhe, trotzdem setzt du den _xscale- und den _yscale-Wert deiner Funktion gleich. So wird das Breite/Höhe-Verhältnis der ursprünglichen Masken-Form beibehalten und das wird kaum je deinem Content entsprechen. Meines Erachtens muss sich also deine expand-Funktion auf die Höhe des mask-MovieClips beziehen. weil das der einzige Wert ist, der effektiv verändert werden soll. Für jede weiter Wertmodifikation musst du aber eine eigene Berechnung durchführen!

In der Flash-FAQ findest du den Prototype elasticSetTo, mit dem du mit einer Zeile Code beliebig viele numerische Werte "elastisch" auf einen Zielwert rechnen kannst. In deinem Falle denk ich mal, würde das einiges vereinfachen.

gruss
 
Zuletzt bearbeitet:
Zurück