幾何範例:將矩陣變形套用至顯示物件Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本 DisplayObjectTransformer 樣本應用程式會示範使用 Matrix 類別進行顯示物件之變形作業的數項功能,其中包括:
此應用程式可提供介面,用來調整矩陣變形的參數,如下所示: 當使用者按一下「變形」按鈕時,應用程式便會套用正確的變形作業。 原始的顯示物件,以及旋轉 -45° 並縮放 50% 之後的顯示物件 若要取得此樣本的應用程式檔案,請參閱 www.adobe.com/go/learn_programmingAS3samples_flash_tw。您可以在 Samples/DisplayObjectTransformer 檔案夾中找到 DisplayObjectTransformer 應用程式檔案,此應用程式是由下列檔案組成:
定義 MatrixTransformer 類別MatrixTransformer 類別包含靜態方法,可套用 Matrix 物件的幾何變形。 transform() 方法transform() 方法包含下列每一個項目的參數:
傳回值為所產生的矩陣。 transform() 方法會呼叫此類別的下列靜態方法:
其中每一個都會傳回已套用變形的來源矩陣。 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; 從應用程式呼叫 MatrixTransformer.transform() 方法此應用程式包含使用者介面,可用來從使用者處取得變形參數。然後,再將這些值以及顯示物件之 transform 屬性的 matrix 屬性傳遞給 Matrix.transform() 方法,如下所示: tempMatrix = MatrixTransformer.transform(tempMatrix, xScaleSlider.value, yScaleSlider.value, dxSlider.value, dySlider.value, rotationSlider.value, skewSlider.value, skewSide ); 接下來,此應用程式會將傳回值套用至顯示物件之 transform 屬性的 matrix 屬性,觸發變形作業: img.content.transform.matrix = tempMatrix; |
|