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 つのマトリックス rotate45MatrixdoubleScaleMatrix は 2 つの矩形 rectangleMc_1rectangleMc_2 に適用されます。次に、rotate45MatrixdoubleScaleMatrixconcat() メソッドを使用して、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