as3マトリクス2

●Matrixクラスのメソッド(抜粋)
メソッド 説明
translateメソッド 位置情報の更新
rotateメソッド 角度情報の更新
scaleメソッド 拡大/縮小情報の更新
createBoxメソッド 位置・角度・拡大/縮小情報をまとめて更新
concatメソッド マトリクス情報を連結
cloneメソッド マトリクス情報の複製を作成

//ボタンを押した際に,x座標を10,y座標を5増加させる
function moveStar(e:MouseEvent){
  //starの現在のマトリクス情報を取得
  var mat:Matrix = star.transform.matrix;
  //取り出したマトリクスの位置情報を更新
  mat.translate(10,5);
  //starに更新した情報を適用
  star.transform.matrix = mat;
}
button.addEventListener(MouseEvent.CLICK, moveStar);

■回転のマトリクス
回転のマトリクスには基準点の注意が必要となる。concatを使って結合しるのがポイント

//初期位置のマトリクス情報を保存
var baseMat:Matrix = star.transform.matrix;
//回転の状態を管理するマトリクスを別に用意
var rotateMat:Matrix = new Matrix();
//角度の情報を更新
rotateMat.rotate(Math.PI/6);  //30度回転
//初期位置のマトリクスと連結する
rotateMat.concat(baseMat);    //(1)concatメソッドで連結
//連結したマトリクスをstarに適用する
star.transform.matrix = rotateMatrix;

■scaleの例
//初期位置のマトリクス情報を保存
var baseMat:Matrix = star.transform.matrix;
//拡大率の状態を管理するマトリクスを別に用意
var scaleMat:Matrix = new Matrix();
//ボタンを押すたびに,「その場で」拡大
function scaleStar(e:MouseEvent){
  //拡大率情報を更新
  scaleMat.scale(1.5,1.5);
  //拡大率のマトリクスから,合成用のマトリクスを作成
  var mat:Matrix = scaleMat.clone();
  //初期位置のマトリクス情報と連結
  mat.concat(baseMat);
  //starにマトリクス情報を反映
  star.transform.matrix = mat;
}
button.addEventListener(MouseEvent.CLICK, scaleStar);

■一気に設定も可能

マトリクス情報を一気に設定する

マトリクス情報をまとめて設定するには,「createBoxメソッド」を使用します。createBoxメソッドは,五つの引数を指定し,マトリクスの情報を更新するメソッドです。

マトリクス.createBox(x方向の拡大率, y方向の拡大率,
           回転角度, x方向の位置, y方向の位置)

元の大きさの1/2の大きさで,45度回転させ,座標(100,50)の位置に移動させたい」という場合には,次のようにコードを記述します。

var mat:Matrix = new Matrix(); mat.createBox(0.5, 0.5, 45*Math.PI/180, 100, 50); star.transform.matrix = mat;