Matrix
類別代表變形矩陣,可決定如何從一個座標空間,將各點對應到另一個空間。您可以透過設定 Matrix 物件的屬性、將該 Matrix 物件套用至 Transform 物件的
matrix
屬性,然後將該 Transform 物件套用成顯示物件的
transform
屬性,藉以在顯示物件上執行各種圖像轉換。 這些轉換函數包括轉移 (
x
及
y
重新定位)、旋轉、縮放及傾斜。
雖然您可以透過直接調整 Matrix 物件之屬性 (
a
、
b
、
c
、
d
、
tx
、
ty
) 的方式定義矩陣,但是使用
createBox()
方法則會更加容易。這個方法包含可讓您直接定義所產生矩陣之縮放、旋轉與轉移效果的參數。例如,下列程式碼會建立 Matrix 物件,此物件具有水平縮放係數 2.0、垂直縮放係數 3.0、旋轉 45°,以及向右移動 (轉移) 10 個像素並向下移動 20 個像素的效果:
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);
您也可以使用
scale()
、
rotate()
與
translate()
方法,調整 Matrix 物件的縮放、旋轉及轉譯效果。請注意,這些方法必須搭配現有之 Matrix 物件的值來使用。例如,下列程式碼會設定 Matrix 物件,因為呼叫
scale()
和
rotate()
方法兩次的緣故,所以此物件會以 4 為係數縮放物件,並將其旋轉 60°:
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;
若要將傾斜變形套用至 Matrix 物件,請調整該物件的
b
或
c
屬性。其中,調整
b
屬性會垂直傾斜矩陣,而調整
c
屬性則會水平傾斜矩陣。下列程式碼會以 2 為係數,垂直傾斜
myMatrix
Matrix 物件:
var skewMatrix:Matrix = new Matrix();
skewMatrix.b = Math.tan(2);
myMatrix.concat(skewMatrix);
您可以將 Matrix 變形套用至顯示物件的
transform
屬性。例如,下列程式碼會將矩陣變形套用至名為
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;
第一行會將 Matrix 物件設定為
myDisplayObject
顯示物件所使用的現有變形矩陣 (
myDisplayObject
顯示物件之
transformation
屬性的
matrix
屬性)。如此一來,您所呼叫的 Matrix 類別方法便會在顯示物件的現有位置呈現縮放與旋轉的累加效果。