Codehelper

Programmierung · Anleitungen · Codeschnipsel

Für Drehung den Registrierungspunkt ändern / Actionscript 3

17.08.2008 · Actionscript
Für Drehung den Registrierungspunkt ändern / Actionscript 3

Um den Registrierungspunkt für eine Drehung eines Rechteckes zu verändern, benötigen wir die Matrix-Klasse. Da sich das Rechteck permanent drehen soll, muss man auf das ENTER_FRAME Event lauschen.

Für dieses Beispiel wird davon ausgegangen, dass bereits ein MovieClip mit dem Namen rect auf der Bühne liegt bzw. bereits zur Anzeigeliste hinzugefügt wurde. Dieser soll nun sozusagen mittig rotieren und nicht über seinen Standard-Registrierungspunkt beim 0,0.



<em>//Zuerst einen EventListener anlegen</em>

<strong>rect.addEventListener(Event.ENTER_FRAME,enter_frame);</strong>



<em>//Die Geschwindigkeit der Drehung / Änderung</em>

<strong>rect.aenderung = 1;</strong>



<em>//Jeweils halbe Breite und Höhe des Rechteckes speichern</em>

<strong>var rectWH:Number = rect.width/2;</strong><em> //halbe breite des zu transformierenden Objektes</em>

<strong>var rectHH:Number = rect.height/2;</strong><em> //halbe höhe des zu transformierenden Objektes</em>



<em>//Die EventListener-Funktion</em>

<strong>function enter_frame(evt:Event)

{</strong>

<strong>var rotationMatrix:Matrix = new Matrix();</strong><em> //Instanz erzeugen</em>

<strong>rotationMatrix.translate(-rectWH, -rectHH);</strong><em> //verschiebt Objekt auf x/y-Achse</em>

<strong>rotationMatrix.rotate(rect.aenderung );</strong><em> //Rotation durchführen</em>

<strong>rotationMatrix.translate(rectWH, rectHH);</strong><em> //nochmals verschieben</em>



<strong>rect.transform.matrix = rotationMatrix;</strong><em> //Transformation anwenden</em>

<strong>rect.aenderung += 1;</strong><em> //Geschwindigkeit hochzählen</em>

<strong>}</strong>