Matrix オブジェクトの使用

Matrix クラスは、2 つの座標空間の間におけるポイントのマッピング方法を決定する変換マトリックス (変換行列) を表します。Matrix オブジェクトのプロパティを設定し、その Matrix オブジェクトを Transform オブジェクトの matrix プロパティに適用し、さらに、その Transform オブジェクトを表示オブジェクトの transform プロパティに適用することで、表示オブジェクトに対してさまざまなグラフィック変換を実行できます。実現できる変換機能としては、平行移動 (x 位置および y 位置の移動)、回転、拡大 / 縮小、傾斜などがあります。

サブトピック

Matrix オブジェクトの定義

Matrix オブジェクトの定義

マトリックスは、プロパティ (abcdtxty) を調整して直接に定義することもできますが、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);

Matrix オブジェクトの拡大 / 縮小、回転、平行移動のエフェクトは、scale()rotate()、および translate() メソッドを使用して調整することもできます。これらのメソッドで指定した値は、既存の 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;

1 行目では、myDisplayObject 表示オブジェクトで使用される既存の変換マトリックスに Matrix オブジェクトが設定されます (myDisplayObject 表示オブジェクトの transformation プロパティの matrix プロパティ)。こうすることで、表示オブジェクトの現状の位置、拡大率、回転角をふまえた上に、Matrix クラスメソッドの実行による効果を累積的に適用できます。

メモ

 

flash.geometry パッケージには ColorTransform クラスも含まれていますが、このクラスは Transform オブジェクトの colorTransform プロパティを設定する際に使用するものです。幾何学変換には使用しないため、この章では説明しません。詳細については、『ActionScript 3.0 コンポーネントリファレンスガイド』の ColorTransform クラスを参照してください。


 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000188.html