Flash CS3 ドキュメンテーション |
|||
| ActionScript 2.0 リファレンスガイド > ActionScript クラス > Matrix (flash.geom.Matrix) > concat (Matrix.concat メソッド) | |||
public concat(m: Matrix ) : Void
マトリックスを現在のマトリックスと連結して、2 つのマトリックスの図形効果を効果的に組み合わせます。数学的に言うと、2 つのマトリックスを連結することは、マトリックスの乗算を使って組み合わせることと同じです。
たとえば、マトリックス m1 はオブジェクトの大きさを 4 倍にし、マトリックス m2 はオブジェクトを 1.5707963267949 (Math.PI/2) ラジアン回転する場合、m1.concat(m2) は、オブジェクトの大きさを 4 倍にし、そのオブジェクトを Math.PI/2 ラジアン回転するマトリックスに m1 を変換します。
このメソッドは、連結されたマトリックスでソースマトリックスを置き換えます。2 つのソースマトリックスをどちらも変更しないで 2 つのマトリックスを連結する場合は、例に示されているように、まず clone() メソッドを使用して、ソースマトリックスをコピーします。
対応バージョン : ActionScript 1.0、Flash Player 8
m:Matrix - ソースマトリックスに連結するマトリックス。
次の例では、3 つのマトリックスを作成して、3 つの矩形のムービークリップの変換を定義します。最初の 2 つのマトリックス rotate45Matrix と doubleScaleMatrix は 2 つの矩形 rectangleMc_1 と rectangleMc_2 に適用されます。次に、rotate45Matrix と doubleScaleMatrix の concat() メソッドを使用して、3 つ目のマトリックス scaleAndRotateMatrix を作成します。その後、このマトリックスを rectangleMc_3 に適用して拡大・縮小と回転を行います。
import flash.geom.Matrix;
import flash.geom.Transform;
var rectangleMc_0:MovieClip = createRectangle(20, 80, 0x000000);
var rectangleMc_1:MovieClip = createRectangle(20, 80, 0xFF0000);
var rectangleMc_2:MovieClip = createRectangle(20, 80, 0x00FF00);
var rectangleMc_3:MovieClip = createRectangle(20, 80, 0x0000FF);
var rectangleTrans_1:Transform = new Transform(rectangleMc_1);
var rectangleTrans_2:Transform = new Transform(rectangleMc_2);
var rectangleTrans_3:Transform = new Transform(rectangleMc_3);
var rotate45Matrix:Matrix = new Matrix();
rotate45Matrix.rotate(Math.PI/4);
rectangleTrans_1.matrix = rotate45Matrix;
rectangleMc_1._x = 100;
trace(rotate45Matrix.toString()); // (a=0.707106781186548, b=0.707106781186547, c=-0.707106781186547, d=0.707106781186548, tx=0, ty=0)
var doubleScaleMatrix:Matrix = new Matrix();
doubleScaleMatrix.scale(2, 2);
rectangleTrans_2.matrix = doubleScaleMatrix;
rectangleMc_2._x = 200;
trace(doubleScaleMatrix.toString()); // (a=2, b=0, c=0, d=2, tx=0, ty=0)
var scaleAndRotateMatrix:Matrix = doubleScaleMatrix.clone();
scaleAndRotateMatrix.concat(rotate45Matrix);
rectangleTrans_3.matrix = scaleAndRotateMatrix;
rectangleMc_3._x = 300;
trace(scaleAndRotateMatrix.toString()); // (a=1.4142135623731, b=1.41421356237309, c=-1.41421356237309, d=1.4142135623731, tx=0, ty=0)
function createRectangle(width:Number, height:Number, color:Number):MovieClip {
var depth:Number = this.getNextHighestDepth();
var mc:MovieClip = this.createEmptyMovieClip("mc_" + depth, depth);
mc.beginFill(color);
mc.lineTo(0, height);
mc.lineTo(width, height);
mc.lineTo(width, 0);
mc.lineTo(0, 0);
return mc;
}
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00001848.html