Oder "Wie baue ich
ein ansprechendes Menü, ohne die ressourcenfressenden Tweenings einzusetzen"
ActionScript
![]()
Weiter unten wird der Aufbau vom MC "zoomer",
die Buttons-Aktionen und die Bedeutung der Variablen "z"
erklärt.
![]()
![]()
![]()
MC "zoomer"
![]()
Der MC "zoomer" ist in unserem Menü für die Animation verantwortlich.
Er besteht aus 2 Keyframes.
Keyframe 1:
| Set Variable: "i" = 1 | |
| Loop While (i <= 8) | |
|
If (i = n) |
|
|
If (GetProperty ("/btn" & n,_xscale) < 130) |
|
|
Set Property ("/btn" & n, X-Skalierung) = GetProperty ("/btn" & n,_xscale) + z |
|
|
Set Property ("/btn" & n, Y-Skalierung) = GetProperty ("/btn" & n,_yscale) + z |
|
|
End If |
|
|
Else If (i <> n) |
|
|
If (GetProperty ("/btn" & i,_xscale) > 100) |
|
|
Set Property ("/btn" & i, X-Skalierung) = GetProperty ("/btn" & i,_xscale) - z |
|
|
Set Property ("/btn" & i, Y-Skalierung) = GetProperty ("/btn" & i,_yscale) - z |
|
|
End If |
|
|
End If |
|
|
Set Variable: "i" = i + 1 |
|
| End Loop |
Erklärung:
Keyframe 2 enthält nur die Anweisung "Go to and Play (1)". Man könnte diese Anweisung weglassen, aber dann wird die Animation nicht so flüssig (zumindest nicht auf meinem PC)
![]()
![]()
![]()
Buttons
![]()
Die Buttons in diesem Menü reagieren 1. wenn der Mauszeiger über dem
Button ist und 2. wenn der Mauszeiger die Buttonfläche verlässt. Ich
habe die Klick-Anweisung nicht eingebaut, weil es hier nicht nötig ist
:) An den AS des Buttons kann man unter anderem durch Doppelklick auf den Button
im Bearbeitungsmodus des MC's rankommen.
Was passiert nun, wenn der Mauszeiger über einem Button ist? Es wird eine Variable im "zoomer" deklariert, die der Nummer des Button-MC's entspricht. Also, wenn man mit der Maus über den MC "button1" mit dem Instanznamen (s. vorherige Seite) "btn1" fährt, dann wird n=1 gesetzt, bei "btn2" wird n=2 usw. Alles klar? Der "zoomer" läft die ganze Zeit im Hintergrund (was man natürlich auch ändern kann, aber nicht unbedingt erforderlich ist). Da er aber am Anfang noch kein n-Wert bekommen hat, tut sich visuel garnichts. Die Variable "i" wird hochgezählt. Man könnte den Wert "8" in der Loop-Anweisung auch gleich 3 setzen, weil wir ja nur 3 Buttons haben, wenn wir aber uns entscheiden, mehr Buttons zu machen, dann haben wir weniger Klick-/Tipparbeit :) So, wenn "n" einem existierenden MC entspricht, dann wird die Bedingung aus Zeile 3 erfüllt und die Eigenschaften des MC's verändert. Um die Instanz zu ermitteln, welche wir verändern wollen, wird der Name aus "/btn" und dem n-Wert zusammengesetzt. Die Anweisung If (GetProperty ("/btn" & n,...) ist ein Beispiel für so einen zusammengesetzten Namen. Dieser muß als Ausdruck definiert sein! Wenn man nun die Buttonfläche verlässt, wird n ungleich i sein, weil wir ja n gleich "nichts" gesetzt haben. Nun wird aber auch die Bedingung in der Zeile 9 des "zoomers" erfüllt, was das Verändern der Eigenschaften ALLER (also von 1 bis 8 mit Ausnahme i=n) Instanzen mit sich führt, deren x-Skalierung größer als 100% ist. In diesem Fall wird der Name der Instanzen aus "/btn" und "i" zusammengesetzt.
![]()
![]()
![]()
Variable "z"
![]()
Was ist den nun die Variable "z"? Wozu ist das Ding gut? Nun, damit
kann man bequem die Geschwindigkeit verändern, mit der die Animation abläuft.
Nützlich kann sowas sein, wenn man ziemlich oft testet oder verschiedene
Geschwindigkeiten verschiedenen Buttons zuweisen möchte (z.B wenn n=1,
dann z=was weiß ich)
Szene 1, Keyframe 1
| 1 | Begin Tell Target ("/zoomer") |
| 2 | Set Variable: "z" = 5 |
| 3 | End Tell Target |
So, das ist es gewesen. Oder hab ich was vergessen? Manch einer wird wohl sagen, daß es zu aufwendig ist, aber versucht es erst mal mit Tweening und dann nach dieser Methode zu machen - Ihr werdet den Unterschied merken :)
PS.: Man kann natürlich andere Eigenschaften auch verändern. Die Skalierungseigenschaft ist einfacher zu handhaben, weil hier der Wert 100% sozusagen fest gespeichert ist. Auf jeden Fall kann man dieses Beispiel auch auf andere Sachen als nur Menüs anwenden.