Flash AS3 中の matrix 矩陣変換を利用して、表示オブジェクト(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 の古い変換行列を連結して、 // 転置前に行われた行列変換を保持することができます mtx.concat (obj.transform.matrix); //transform の変換 obj.transform.matrix = mtx;