パッケージ
|
flash.geom
|
クラス
|
public class Matrix
|
継承
|
Matrix → Object
|
説明
Matrixクラスは変換行列を表し、ひとつの座標空間上の点を、他の座標空間にどう移すかを定めます。さまざまな表示上の変換が、DisplayObjectに対して実行できます。それには、MatrixオブジェクトをTransformオブジェクトのmatrixプロパティに適用し、さらにそのTransformオブジェクトをDisplayObjectのtransformプロパティに適用します。これらの変換の機能には、平行移動(xおよびyの位置変更)や回転、拡大・縮小、傾斜などが含まれます。
このような変換は「アフィン変換」と呼ばれます。アフィン変換は、直線の平行を保って変換するため、平行な直線同士は変換しても平行になります。
変換行列をDisplayObjectに適用するには、Transformオブジェクトを作成して、そのmatrixプロパティに変換行列を設定します。そして、DisplayObjectのtransformプロパティに、そのTransformオブジェクトを設定してください。Matrixオブジェクトはパラメータとして、以下のようなメソッドに用いられることもあります。
- BitmapDataオブジェクトのdraw()メソッド
- GraphicオブジェクトのbeginBitmapFill()やbeginGradientFill()、lineGradientStyle()メソッド
変換行列は3×3の行列で、その内容はつぎのとおりです[*1]。
これまでの変換行列では、vとu、wプロパティは追加の機能を提供します。Matrixクラスは2次元空間でのみ処理されるので、プロパティ値はつねにuとvが0.0、wが1.0とみなされます。行列における有効な値はつぎのとおりです[*1]。
Matrixオブジェクトの6つのプロパティ、a、b、c、d、tx、tyそれぞれについて、値を取得・設定することができます。
Matrixクラスはおもな4つの変換である、平行移動、拡大・縮小、回転、傾斜をサポートします。そのうち3つの変換は、下表に掲げた専用のメソッドで設定することもできます。
変換
|
メソッド
|
変換行列の値
|
結果の表示
[*2] |
説明
|
平行移動(変位)
|
translate(tx, ty)
|
|
|
イメージを、右にtxピクセル、下にtyピクセル移動します。
|
拡大・縮小
|
scale(Sx, Sy)
|
|
|
イメージの大きさを変更して、各ピクセルの位置をx軸方向にsx倍、y軸方向にSy倍します。
|
回転
|
rotate(q)
|
[*1]
|
|
イメージを角度q回転します。なお、角度の単位はラジアンです。
|
傾斜
|
なし。プロパティbとcを設定する必要があります。
|
[*3]
|
|
イメージをx軸またはy軸の方向に、連続的にスライドします。Matrixオブジェクトのbプロパティは、y軸に沿った傾斜角のtanを示します。また、Matrixオブジェクトのcプロパティは、x軸に沿った傾斜角のtanを示します。
|
変換の関数はそれぞれ現行のmatrixプロパティを変更するので、複数の変換を効果的に組合わせることができます。それには、複数の変換関数を呼出してから、そのmatrixを対象のDisplayObjectに適用します(DisplayObjectのtransformプロパティを用います)。
new Matrix()コンストラクタを使ってMatrixオブジェクトを生成し、そのMatrixオブジェクトに対してメソッドを呼出します。
[訳者注*1] [ヘルプ]では、変換行列におけるMatrix.bとMatrix.cプロパティの位置が入れ違っています(「Flash CS3ヘルプ正誤表」参照)。なお、英語版のLiveDocsでは、これらの図は修正されています。
[訳者注*2] [ヘルプ]の図は単純化されすぎてわかりにくいので、オリジナルの図に差替えました。
[訳者注*3] [ヘルプ]では、変換行列におけるMatrix.bとMatrix.cプロパティ、つまりskewxとskewyの位置が入れ違っています(「Flash CS3ヘルプ正誤表」参照)。
|
Player
ActionScript 3.0/Flash Player 9/AIR1.0以降。
出典
Adobe LiveDocs[ActionScript 3.0 Language and Components Reference] > [Matrix]
参考
Adobe LiveDocs[ActionScript 3.0コンポーネントリファレンスガイド] > [Matrix]
作成者: 野中文雄
作成日: 2008年8月31日