サイトトップ

Director Flash 書籍 業務内容 プロフィール

Adobe Flash非公式テクニカルノート

Matrixクラス

ID: FN0808001 Product: Flash Platform: All Version: CS3/ActionScript 3.0

パッケージ 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つのプロパティ、abcdtxtyそれぞれについて、値を取得・設定することができます。

Matrixクラスはおもな4つの変換である、平行移動、拡大・縮小、回転、傾斜をサポートします。そのうち3つの変換は、下表に掲げた専用のメソッドで設定することもできます。

変換 メソッド 変換行列の値 結果の表示 [*2] 説明
平行移動(変位) translate(tx, ty) イメージを、右にtxピクセル、下にtyピクセル移動します。
拡大・縮小 scale(Sx, Sy) イメージの大きさを変更して、各ピクセルの位置をx軸方向にsx倍、y軸方向にSy倍します。
回転 rotate(q)
[*1]
イメージを角度q回転します。なお、角度の単位はラジアンです。
傾斜 なし。プロパティbcを設定する必要があります。
[*3]
イメージをx軸またはy軸の方向に、連続的にスライドします。Matrixオブジェクトのbプロパティは、y軸に沿った傾斜角のtanを示します。また、Matrixオブジェクトのcプロパティは、x軸に沿った傾斜角のtanを示します。

変換の関数はそれぞれ現行のmatrixプロパティを変更するので、複数の変換を効果的に組合わせることができます。それには、複数の変換関数を呼出してから、そのmatrixを対象のDisplayObjectに適用します(DisplayObjectのtransformプロパティを用います)。

new Matrix()コンストラクタを使ってMatrixオブジェクトを生成し、そのMatrixオブジェクトに対してメソッドを呼出します。

[訳者注*1] [ヘルプ]では、変換行列におけるMatrix.bMatrix.cプロパティの位置が入れ違っています(「Flash CS3ヘルプ正誤表」参照)。なお、英語版のLiveDocsでは、これらの図は修正されています。

[訳者注*2] [ヘルプ]の図は単純化されすぎてわかりにくいので、オリジナルの図に差替えました。

[訳者注*3] [ヘルプ]では、変換行列におけるMatrix.bMatrix.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日


Copyright © 2001-2008 Fumio Nonaka.  All rights reserved.