15.10.2012 Views

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ACTIONSCRIPT 3.0 ENTWICKLERHANDBUCH<br />

Arbeiten mit drei Dimensionen (3D)<br />

}<br />

}<br />

}<br />

doTransforms();<br />

private function doTransforms():void<br />

{<br />

rect1.rotationX = 15;<br />

rect1.scaleX = 1.2;<br />

rect1.x += 100;<br />

rect1.y += 50;<br />

rect1.rotationZ = 10;<br />

}<br />

var matrix:Matrix3D = rect2.transform.matrix3D;<br />

matrix.appendRotation(15, Vector3D.X_AXIS);<br />

matrix.appendScale(1.2, 1, 1);<br />

matrix.appendTranslation(100, 50, 0);<br />

matrix.appendRotation(10, Vector3D.Z_AXIS);<br />

rect2.transform.matrix3D = matrix;<br />

In der doTransforms()-Methode verwendet der erste Codeblock die DisplayObject-Eigenschaften zum Ändern der<br />

Drehung, Skalierung und Position eines Rechtecks. Der zweite Codeblock verwendet die Methoden der Matrix3D-<br />

Klasse, um dieselben Transformationen durchzuführen.<br />

Der wichtigste Vorteil beim Verwenden der Matrix3D-Methoden liegt darin, dass alle Berechnungen zuerst in der<br />

Matrix stattfinden. Anschließend werden sie nur einmal auf das Anzeigeobjekt angewendet, wenn seine<br />

transform.matrix3D-Eigenschaft gesetzt ist. Die Einstellung der DisplayObject-Eigenschaften macht das Lesen des<br />

Quellcodes etwas einfacher. Allerdings sind jedes Mal, wenn eine Dreh- oder Skalierungseigenschaft gesetzt wird,<br />

mehrere Berechnungen und Änderungen an mehreren Anzeigeobjekteigenschaften erforderlich.<br />

Wenn Ihr Code dieselben komplexen Transformationen an Anzeigeobjekten mehrmals vornimmt, sollten Sie das<br />

Matrix3D-Objekt als Variable speichern und dann immer wieder anwenden.<br />

Verwenden von 3DMatrix-Objekten zur Neuanordnung der Anzeige<br />

Flash Player 10 und höher, Adobe AIR 1.5 und höher<br />

Wie bereits weiter vorne erwähnt, bestimmt die Reihenfolge der Ebenen in der Anzeigeliste die Anzeigereihenfolge,<br />

ungeachtet ihrer relativen z-Achsen. Wenn Ihre Animation die Eigenschaften von Anzeigeobjekten in einer<br />

Reihenfolge transformiert, die von der Reihenfolge in der Anzeigeliste abweicht, kann es passieren, dass der Betrachter<br />

eine Anordnung gemäß der Anzeigeliste sieht, die der z-Achsenanordnung widerspricht. Das bedeutet, dass ein<br />

Objekt, das weiter entfernt vom Betrachter angezeigt werden sollte, vor einem Objekt erscheint, das näher beim<br />

Betrachter liegt.<br />

Um sicherzustellen, dass die Anordnung von dreidimensionalen Anzeigeobjekten der relativen Tiefe der Objekte<br />

entspricht, sollten Sie einen Ansatz wie den folgenden beachten:<br />

1 Verwenden Sie die getRelativeMatrix3D()-Methode des Transform-Objekts, um die relativen z-Achsen des<br />

untergeordneten 3D-Anzeigeobjekts abzurufen.<br />

2 Entfernen Sie die Objekte mithilfe der removeChild()-Methode aus der Anzeigeliste.<br />

3 Sortieren Sie die Anzeigeobjekte aufgrund ihrer relativen z-Achsenwerte.<br />

4 Fügen Sie die untergeordneten Objekte mithilfe der addChild()-Methode in umgekehrter Reihenfolge wieder in<br />

die Anzeigeliste ein.<br />

Letzte Aktualisierung 27.6.2012<br />

385

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!