Utilisation des objets Matrix

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 celui-ci à la propriété matrix d'un objet Transform, que vous appliquez ensuite à la 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.

Sous-rubriques

Définition des objets Matrix

Définition des objets Matrix

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 a l'effet de redimensionner un objet horizontalement de 2.0, verticalement de 3.0, de le faire pivoter de 45 degrés, de le déplacer (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 degrés 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 de matrice à 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 ). De cette façon, les méthodes de la classe Matrix que vous appelez ont un effet cumulatif sur la position, le redimensionnement et la rotation de l'objet d'affichage.

REMARQUE

 

La classe ColorTransform est également comprise dans le package flash.geometry. Cette classe sert à définir la propriété colorTransform d'un objet Transform. Etant donné qu'elle n'applique aucun type de transformation géométrique, elle n'est pas traitée dans ce chapitre. Pour de plus amples informations, voir la classe ColorTransform dans la Référence du langage et des composants ActionScript 3.0.


Flash CS3

 

M'envoyer un message électronique lorsque des commentaires sont ajoutés à cette page | Rapport de commentaire

Page en cours: http://livedocs.adobe.com/flash/9.0_fr/main/00000188.html