La classe
Matrix
représente une matrice de transformation qui détermine le mappage des points d’un espace de coordonnées à l’autre. Pour appliquer diverses transformations graphiques à un objet d’affichage, vous pouvez définir les propriétés d’un objet Matrix, puis appliquer cet objet à la propriété
matrix
d’un objet Transform que vous appliquez ensuite comme propriété
transform
de l’objet d’affichage. Ces fonctions de transformation incluent la translation (repositionnement de
x
et
y
), la rotation, le redimensionnement et l’inclinaison.
Même si vous pouvez définir une matrice en ajustant directement les propriétés (
a
,
b
,
c
,
d
,
tx
,
ty
) d’un objet Matrix, il est plus facile d’utiliser la méthode
createBox()
. Cette méthode comporte des paramètres qui vous permettent de définir directement les effets de redimensionnement, de rotation et de translation de la matrice résultante. Par exemple, le code suivant crée un objet Matrix qui redimensionne un objet horizontalement de 2,0, le redimensionne verticalement de 3,0, le fait pivoter de 45°, le déplace (par translation) de 10 pixels vers la droite et de 20 pixels vers le bas :
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);
Vous pouvez également ajuster les effets de redimensionnement, de rotation et de translation d’un objet Matrix à l’aide des méthodes
scale()
,
rotate()
et
translate()
. Ces méthodes sont combinées aux valeurs de l’objet Matrix existant. Par exemple, le code suivant définit un objet Matrix qui redimensionne un objet d’un facteur de 4 et le fait pivoter de 60°, car les méthodes
scale()
et
rotate()
sont appelées deux fois :
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;
Pour appliquer une transformation par inclinaison à un objet Matrix, ajustez sa propriété
b
ou
c
. Lorsque vous ajustez la propriété
b
, la matrice est inclinée verticalement et lorsque vous ajustez la propriété
c
, elle est inclinée horizontalement. Le code suivant incline l’objet Matrix
myMatrix
verticalement d’un facteur de 2 :
var skewMatrix:Matrix = new Matrix();
skewMatrix.b = Math.tan(2);
myMatrix.concat(skewMatrix);
Vous pouvez appliquer une transformation Matrix à la propriété
transform
d’un objet d’affichage. Par exemple, le code suivant applique une transformation Matrix à un objet d’affichage nommé
myDisplayObject
:
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;
La première ligne définit un objet Matrix sur la matrice de transformation existante utilisée par l’objet d’affichage
myDisplayObject
(la propriété
matrix
de la propriété
transformation
de l’objet d’affichage
myDisplayObject
). Les méthodes de la classe Matrix que vous appelez ont ainsi un effet cumulatif sur la position, l’échelle et la rotation actuelles de l’objet d’affichage.