利用 Flash AS3 中的矩陣變換(matrix transformation)來處理 Flash 中的顯示對象(DisplayObject),例如圖片、圖像、動畫對於程序員來說非常方便。下面的代碼實現了對 Flash 中任意的顯示對象 DisplayObject 進行上下和左右的轉置、反轉、翻轉操作。原理非常簡單,只需要將對象的 zoom 值設置為 - 1,其中 a 代表水平方向,b 代表垂直方向。
代碼如下:
public class Transverse
{
public static function transLeftRight(obj : DisplayObject)
{
var mtx = new Matrix();
mtx.a=-1; // 設置 a 為 - 1
mtx.tx=obj.width; // 設置平移
mtx.concat (obj.transform.matrix); // 連接矩陣
obj.transform.matrix = mtx; // 變換
}
public static function transUpDown(obj : DisplayObject)
{
var mtx = new Matrix();
mtx.b=-1; // 設置 b 為 - 1
mtx.ty=obj.height; // 設置平移
mtx.concat (obj.transform.matrix); // 連接矩陣
obj.transform.matrix = mtx; // 變換
}
}
簡單介紹一下代碼
// 定義新的變換矩陣實例 var mtx = new Matrix (); // 設置 a 為 - 1,將進行水平轉置; // 設置 b 為 - 1,將進行垂直轉置 mtx.a=-1; // 設置平移,如果不設置則就地轉置 //tx,ty 可根據變換的方式設置為對象的 width 和 height mtx.tx=obj.width; // 連接矩陣,將 obj 的舊變換矩陣 + mtx 得到新的矩陣 // 在進行轉置之前,需要將 obj 的舊變換矩陣進行連接, // 以保留 obj 在轉置之前進行的矩陣變換 mtx.concat (obj.transform.matrix); //transform 變換 obj.transform.matrix = mtx;