使用 Matrix 物件

Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本

Matrix 類別代表變形矩陣,可決定如何從一個座標空間,將各點對應到另一個空間。您可以透過設定 Matrix 物件的屬性、將該 Matrix 物件套用至 Transform 物件的 matrix 屬性,然後將該 Transform 物件套用成顯示物件的 transform 屬性,藉以在顯示物件上執行各種圖像轉換。 這些轉換函數包括轉移 (xy 重新定位)、旋轉、縮放及傾斜。

雖然您可以透過直接調整 Matrix 物件之屬性 (abcdtxty) 的方式定義矩陣,但是使用 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 物件,請調整該物件的 bc 屬性。其中,調整 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 類別方法便會在顯示物件的現有位置呈現縮放與旋轉的累加效果。

備註: flash.geometry 套件中也包含 ColorTransform 類別,它是用來設定 Transform 物件的 colorTransform 屬性。由於此類別不會套用任何幾何變形,所以在此處不討論細節。如需詳細資訊,請參閱適用於 Adobe Flash Platform 的 ActionScript 3.0 參考中的 ColorTransform 類別。