Matrix クラスは、座標空間の間でポイントをマッピングする方法を決定する変換行列を表します。Matrix オブジェクトのプロパティを設定し、その Matrix オブジェクトを Transform オブジェクトの matrix プロパティに適用し、さらに、その Transform オブジェクトを表示オブジェクトの transform プロパティに適用することで、表示オブジェクトに対して様々なグラフィック変換を実行できます。実現できる変換機能としては、平行移動(x 位置および y 位置の移動)、回転、拡大 / 縮小、傾斜などがあります。
マトリックスは、プロパティ(a、b、c、d、tx、ty)を調整して直接に定義することもできますが、createBox() メソッドを使用して定義するほうが簡単です。このメソッドのパラメータでは、作成するマトリックスに定義する拡大・縮小、回転、平行移動の効果を直接に定義できます。例えば、次のコードで作成している Matrix オブジェクトには、水平方向 2.0 倍の拡大、垂直方向 3.0 倍の拡大、45 度の回転、右に 10 ピクセルの移動、および下に 20 ピクセルの移動の効果があります。
var matrix:Matrix = new Matrix(); var scaleX:Number = 2.0; var scaleY:Number = 3.0; var rotation:Number = 2 * Math.PI * (45 / 360); var tx:Number = 10; var ty:Number = 20; matrix.createBox(scaleX, scaleY, rotation, tx, ty);
また、scale()、rotate()、translate() の各メソッドを使用すると、Matrix オブジェクトに設定した拡大 / 縮小、回転、平行移動の効果を変更できます。これらのメソッドで指定した値は、既存の Matrix オブジェクトに設定されている値と組み合わされます。例えば、次のコードでは scale() メソッドと rotate() メソッドを 2 回呼び出しているため、Matrix オブジェクトの効果は 4 倍の拡大と 60 度の回転になります。
var matrix:Matrix = new Matrix(); var rotation:Number = 2 * Math.PI * (30 / 360); // 30˚ var scaleFactor:Number = 2; matrix.scale(scaleFactor, scaleFactor); matrix.rotate(rotation); matrix.scale(scaleX, scaleY); matrix.rotate(rotation); myDisplayObject.transform.matrix = matrix;
傾斜変形を Matrix オブジェクトに適用するには、b プロパティまたは c プロパティを調整します。b プロパティを調整するとマトリックスが垂直方向に傾斜し、c プロパティを調整するとマトリックスが水平方向に傾斜します。次のコードは、myMatrix Matrix オブジェクトを垂直方向に 2 倍傾斜します。
var skewMatrix:Matrix = new Matrix(); skewMatrix.b = Math.tan(2); myMatrix.concat(skewMatrix);
Matrix による変換は、表示オブジェクトの transform プロパティに適用できます。例えば、次のコードでは myDisplayObject というオブジェクトにマトリックス変換を適用しています。
var matrix:Matrix = myDisplayObject.transform.matrix; var scaleFactor:Number = 2; var rotation:Number = 2 * Math.PI * (60 / 360); // 60˚ matrix.scale(scaleFactor, scaleFactor); matrix.rotate(rotation); myDisplayObject.transform.matrix = matrix;
最初の行で、myDisplayObject 表示オブジェクトで使用する既存の変換マトリックス(myDisplayObject 表示オブジェクトの transformation プロパティの matrix プロパティ)として、Matrix オブジェクトを設定しています。こうすることで、表示オブジェクトの現在の位置、拡大 / 縮小率、回転角を基準として、Matrix クラスメソッドの実行による効果を累積的に適用できます。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート