Die
Matrix
-Klasse repräsentiert eine Transformationsmatrix, die bestimmt, wie Punkte zwischen verschiedenen Koordinatenräumen abgebildet werden. Sie können verschiedene grafische Transformationen für ein Anzeigeobjekt durchführen, indem Sie die Eigenschaften eines „Matrix“-Objekts festlegen, dieses „Matrix“-Objekt auf die
matrix
-Eigenschaft eines „Transform“-Objekts anwenden und dieses „Transform“-Objekt dann als
transform
-Eigenschaft des Anzeigeobjekts anwenden. Die verfügbaren Transformationsfunktionen sind Versetzen (
x
- und
y
-Neupositionierung), Drehen, Skalieren und Neigen.
Obwohl eine Matrix definiert werden kann, indem die Eigenschaften (
a
,
b
,
c
,
d
,
tx
,
ty
) eines Matrix-Objekts direkt festgelegt werden, ist es einfacher, die
createBox()
-Methode zu verwenden. Diese Methode enthält Parameter, über die Sie die Effekte zum Skalieren, Drehen und Versetzen der resultierenden Matrix direkt definieren können. Mit dem folgenden Code wird beispielsweise ein Matrix-Objekt erstellt, das ein Objekt horizontal mit dem Faktor 2,0 und vertikal mit dem Faktor 3,0 skaliert, um 45 Grad dreht sowie um 10 Pixel nach rechts und um 20 Pixel nach unten verschiebt (versetzt):
var matrix:Matrix = new Matrix();
var scaleX:Number = 2.0;
var scaleY:Number = 3.0;
var rotation:Number = 2 * Math.PI * (45 / 360);
var tx:Number = 10;
var ty:Number = 20;
matrix.createBox(scaleX, scaleY, rotation, tx, ty);
Sie können die Effekte eines Matrix-Objekts zum Skalieren, Drehen und Versetzen auch mithilfe der Methoden
scale()
,
rotate()
und
translate()
anpassen. Beachten Sie, dass bei diesen Methoden die übergebenen Parameter mit den Werten des bestehenden Matrix-Objekts kombiniert werden. Mit dem folgenden Code wird beispielsweise ein Matrix-Objekt festgelegt, mit dem ein Objekt um den Faktor 4 skaliert und um 60° gedreht wird, da die Methoden
scale()
und
rotate()
zweimal aufgerufen werden:
var matrix:Matrix = new Matrix();
var rotation:Number = 2 * Math.PI * (30 / 360); // 30°
var scaleFactor:Number = 2;
matrix.scale(scaleFactor, scaleFactor);
matrix.rotate(rotation);
matrix.scale(scaleX, scaleY);
matrix.rotate(rotation);
myDisplayObject.transform.matrix = matrix;
Wenn Sie ein Matrix-Objekt neigen möchten, ändern Sie die entsprechende
b
- oder
c
-Eigenschaft. Durch Ändern der
b
-Eigenschaft wird die Matrix vertikal geneigt und durch Ändern der
c
-Eigenschaft wird sie horizontal geneigt. Mit dem folgenden Code wird das Matrix-Objekt
myMatrix
um den Faktor 2 vertikal geneigt:
var skewMatrix:Matrix = new Matrix();
skewMatrix.b = Math.tan(2);
myMatrix.concat(skewMatrix);
Sie können eine Matrixtransformation auf die
transform
-Eigenschaft eines Anzeigeobjekts anwenden. Mit dem folgenden Code wird beispielsweise eine Matrixtransformation auf das Anzeigeobjekt
myDisplayObject
angewendet:
var matrix:Matrix = myDisplayObject.transform.matrix;
var scaleFactor:Number = 2;
var rotation:Number = 2 * Math.PI * (60 / 360); // 60°
matrix.scale(scaleFactor, scaleFactor);
matrix.rotate(rotation);
myDisplayObject.transform.matrix = matrix;
In der ersten Zeile wird ein Matrix-Objekt auf die vorhandene Transformationsmatrix gesetzt, die im
myDisplayObject
-Anzeigeobjekt verwendet wird (die
matrix
-Eigenschaft der
transformation
-Eigenschaft des
myDisplayObject
-Anzeigeobjekts). Auf diese Weise haben die Methoden der aufgerufenen Matrix-Klasse eine kumulative Auswirkung auf die aktuelle Position, Skalierung und Drehung des Anzeigeobjekts.
Hinweis:
Das flash.geometry-Paket enthält auch die ColorTransform-Klasse. Mit dieser Klasse wird die
colorTransform
-Eigenschaft eines Transform-Objekts festgelegt. Da hierbei keine geometrischen Transformationen angewendet werden, wird sie hier nicht näher erläutert. Weitere Informationen finden Sie in der Beschreibung der
ColorTransform
-Klasse im
ActionScript 3.0-Referenzhandbuch für die Adobe Flash-Plattform
.