La classe
Matrix
rappresenta una matrice di trasformazione che determina come mappare i punti da uno spazio di coordinate a un altro. È possibile eseguire diverse trasformazioni grafiche su un oggetto di visualizzazione impostando le proprietà di un oggetto Matrix, applicando l'oggetto Matrix alla proprietà
matrix
di un oggetto Transform e applicando quindi l'oggetto Transform come proprietà
transform
dell'oggetto di visualizzazione. Queste funzioni di trasformazione includono conversione (riposizionamento di
x
e
y
), rotazione, modifica in scala e inclinazione.
Nonostante sia possibile definire una matrice modificando direttamente le proprietà (
a
,
b
,
c
,
d
,
tx
,
ty
) di un oggetto Matrix, è più semplice usare il metodo
createBox()
. Questo metodo comprende parametri che consentono di definire direttamente gli effetti di modifica in scala, rotazione e conversione della matrice risultante. Ad esempio, il codice seguente crea un oggetto Matrix che modifica in scala un oggetto orizzontalmente di 2.0, lo modifica in scala verticalmente di 3.0, lo ruota di 45°, lo sposta (traslandolo) di 10 pixel a destra e lo sposta di 20 pixel verso il basso:
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);
Potete anche modificare gli effetti di modifica in scala, rotazione e conversione di un oggetto Matrix usando i metodi
scale()
,
rotate()
e
translate()
. Notate che i valori impostati per questi metodi si combinano con i valori già presenti nell'oggetto Matrix. Ad esempio, il codice seguente imposta un oggetto Matrix che modifica in scala un oggetto di 4 volte e lo ruota di 60°, poiché i metodi
scale()
e
rotate()
sono chiamati due volte:
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;
Per applicare un'inclinazione a un oggetto Matrix, modificatene le proprietà
b
o
c
. Modificando la proprietà
b
si imprime un'inclinazione verticale alla matrice; modificando la proprietà
c
si imprime un'inclinazione orizzontale. Il codice seguente inclina l'oggetto Matrix
myMatrix
in senso verticale di un fattore pari a 2:
var skewMatrix:Matrix = new Matrix();
skewMatrix.b = Math.tan(2);
myMatrix.concat(skewMatrix);
È possibile applicare una trasformazione di matrice alla proprietà
transform
di un oggetto di visualizzazione. Ad esempio, il codice seguente applica una trasformazione di matrice a un oggetto di visualizzazione denominato
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 prima riga imposta un oggetto Matrix sulla matrice di trasformazione esistente usata dall'oggetto di visualizzazione
myDisplayObject
(la proprietà
matrix
della proprietà
transformation
dell'oggetto di visualizzazione
myDisplayObject).
In questo modo, i metodi chiamati per la classe Matrix hanno un effetto cumulativo sulla posizione, la scala e la rotazione dell'oggetto di visualizzazione.