MatrixTransformer 類別包含靜態方法,可套用 Matrix 物件的幾何變形。
transform() 方法
transform()
方法包含下列每一個項目的參數:
-
sourceMatrix
— 輸入矩陣,也就是此方法要加以變形的矩陣
-
xScale
和
yScale
—
x
和
y
縮放係數
-
dx
和
dy
—
x
和
y
轉譯的像素量
-
rotation
— 旋轉的角度量
-
skew
— 傾斜係數 (百分比)
-
skewType
— 傾斜方向,為
"right"
或
"left"
傳回值為所產生的矩陣。
transform()
方法會呼叫此類別的下列靜態方法:
-
skew()
-
scale()
-
translate()
-
rotate()
其中每一個都會傳回已套用變形的來源矩陣。
skew() 方法
skew()
方法會調整矩陣的
b
和
c
屬性,藉以傾斜矩陣。選擇性參數
unit
會判斷用來定義傾斜角度的單位。如有必要,這個方法會將
angle
值轉換為弧度:
if (unit == "degrees")
{
angle = Math.PI * 2 * angle / 360;
}
if (unit == "gradients")
{
angle = Math.PI * 2 * angle / 100;
}
建立
skewMatrix
Matrix 物件並加以調整,以便套用傾斜變形。一開始,它是一個單位矩陣,如下所示:
var skewMatrix:Matrix = new Matrix();
skewSide
參數會決定是哪一邊套用了傾斜變形。如果將它設定為
"right"
,下列程式碼就會設定該矩陣的
b
屬性:
skewMatrix.b = Math.tan(angle);
否則,就會調整 Matrix 的
c
屬性來傾斜底端,如下所示:
skewMatrix.c = Math.tan(angle);
接著這兩個矩陣就會結合,將產生的傾斜變形套用至現有的矩陣,如下列範例所示:
sourceMatrix.concat(skewMatrix);
return sourceMatrix;
scale() 方法
如下列範例所示,如果所提供的縮放係數為百分比,則
scale()
方法首先會調整此係數,然後再使用此矩陣物件的
scale()
方法:
if (percent)
{
xScale = xScale / 100;
yScale = yScale / 100;
}
sourceMatrix.scale(xScale, yScale);
return sourceMatrix;
translate() 方法
translate()
方法只會藉由呼叫此矩陣物件的
translate()
方法來套用
dx
和
dy
轉譯係數,如下所示:
sourceMatrix.translate(dx, dy);
return sourceMatrix;
rotate() 方法
rotate()
方法會將輸入旋轉係數轉換為弧度 (如果所提供的係數為角度或斜率),然後呼叫此矩陣物件的
rotate()
方法:
if (unit == "degrees")
{
angle = Math.PI * 2 * angle / 360;
}
if (unit == "gradients")
{
angle = Math.PI * 2 * angle / 100;
}
sourceMatrix.rotate(angle);
return sourceMatrix;