Klasa
Matrix
reprezentuje macierz transformacji, która określa sposób odwzorowania punktów z jednej przestrzeni współrzędnych na drugą przestrzeń. Istnieje możliwość wykonywania różnych transformacji graficznych na obiekcie wyświetlanym. Należy w tym celu ustawić właściwości obiektu Matrix, zastosować ten obiekt Matrix do właściwości
matrix
obiektu Transform, a następnie zastosować ten obiekt Transform jako właściwość
transform
obiektu wyświetlanego. Do funkcji transformacji należy translacja (zmiana współrzędnych
x
i
y
), obrót, skalowanie i pochylenie.
Mimo że możliwe jest zdefiniowanie macierzy poprzez bezpośrednie określenie wartości właściwości (
a
,
b
,
c
,
d
,
tx
,
ty
) obiektu Matrix, łatwiej jest skorzystać z metody
createBox()
. Parametry tej metody pozwalają na bezpośrednie zdefiniowanie efektów skalowania, obrotu i translacji, jakie ma wprowadzać wynikowa macierz. Na przykład: poniższy kod tworzy obiekt Matrix wprowadzający efekt przeskalowania obiektu w poziomie o wartość 2,0, przeskalowania go w pionie o wartość 3,0, obrócenia go o 45°, przesunięcia go (translacji) o 10 pikseli w prawo i przesunięcia go o 20 pikseli w dół:
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);
Możliwe jest także dopasowanie efektów skalowania, obrotu i translacji wprowadzanych przez obiekt Matrix przy użyciu metod
scale()
,
rotate()
i
translate()
. Należy zwrócić uwagę, że te metody powodują modyfikację dotychczasowych wartości obiektu Matrix. Przykład: poniższy kod konfiguruje obiekt Matrix, który skaluje obiekt 4-krotnie i obraca go o 60°, ponieważ metody
scale()
i
rotate()
są wywoływane dwa razy:
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;
Aby zastosować do obiektu Matrix transformację pochylającą, należy zmodyfikować jego właściwość
b
lub
c
. Zmiana wartości właściwości
b
powoduje pochylenie macierzy w pionie, a zmiana wartości właściwości
c
powoduje pochylenie macierzy w poziomie. Poniższy kod pochyla obiekt Matrix o nazwie
myMatrix
w pionie o współczynnik 2:
var skewMatrix:Matrix = new Matrix();
skewMatrix.b = Math.tan(2);
myMatrix.concat(skewMatrix);
Transformację opisaną przez obiekt Matrix można zastosować do właściwości
transform
obiektu wyświetlanego. Poniższy przykładowy kod ilustruje zastosowanie transformacji macierzowej do obiektu wyświetlanego o nazwie
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;
Pierwszy wiersz przypisuje obiekt Matrix do istniejącej macierzy transformacji obiektu wyświetlanego
myDisplayObject
(właściwości
matrix
właściwości
transformation
obiektu wyświetlanego
myDisplayObject
). Dzięki temu wywołane metody klasy Matrix będą razem wpływać na dotychczasowe położenie, skalę i kąt obrotu obiektu wyświetlanego.
Uwaga:
W skład pakietu flash.geometry wchodzi także klasa ColorTransform. Ta klasa służy do nadawania wartości właściwości
colorTransform
obiektu Transform. Nie została omówiona szczegółowo w tym rozdziale, ponieważ nie powoduje zastosowania żadnej transformacji geometrycznej. Więcej informacji zawiera opis klasy
ColorTransform
w
Skorowidzu języka ActionScript 3.0 dla Platformy Adobe Flash
.