コメントの表示 | RSS フィード
パッケージflash.geom
クラスpublic class Matrix
継承Matrix Inheritance Object

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

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

このような変換をアフィン変換と言います。アフィン変換では、変換中に線分の直線性が保たれるため、平行線は平行のままになります。

変換行列を表示オブジェクトに適用するには、Transform オブジェクトを作成して、そのオブジェクトの matrix プロパティを変換行列に設定し、表示オブジェクトの transform プロパティに Transform オブジェクトを設定します。Matrix オブジェクトは、次のようないくつかのメソッドのパラメータとしても使用します。

変換行列オブジェクトは、次の内容を備えた 3 × 3 の行列です。

従来の変換行列では、uv、および w プロパティによって特別な機能を提供します。Matrix クラスは 2 次元空間でのみ演算できるので、u プロパティと v プロパティの値は 0.0 で、w プロパティの値は 1.0 です。この行列の有効値は次のとおりです。

Matrix オブジェクトの他の 6 つのプロパティ、abcdtx、および ty の値をすべて取得および設定できます。

Matrix クラスは、主要な 4 種類の変換機能 (平行移動、拡大 / 縮小、回転、傾斜) に対応しています。専用メソッドを使用して、これらのうち 3 つの変換機能を設定できます。以下の表に示します。

変換メソッド行列の値表示結果概要
平行移動 (変位)translate(tx, ty) イメージを右に tx ピクセル、下に ty ピクセル移動します。
拡大 / 縮小scale(sx, sy)各ピクセルの位置を x 軸方向に sx 倍、y 軸方向に sy 倍することで、イメージの大きさを変更します。
回転rotate(q)イメージを角度 q (単位はラジアン) だけ回転します。
傾斜または変形 なし。プロパティ bc に設定する必要があります。x 軸または y 軸に平行な方向にイメージをスライドします。Matrix オブジェクトの b プロパティは、y 軸に沿った傾斜角度のタンジェントを表し、Matrix オブジェクトの c プロパティは、x 軸に沿った傾斜角度のタンジェントを表します。

効果的に複数の変換を組み合わせることができるように、変換関数はそれぞれ現在の行列プロパティを変更します。これを行うには、対象の表示オブジェクトの transform プロパティを使用して行列を適用する前に、複数の変換関数を呼び出します。

Matrix オブジェクトのメソッドを呼び出す前に、new Matrix() コンストラクタを使用して Matrix オブジェクトを作成する必要があります。

例を表示

関連項目

flash.display.DisplayObject.transform
flash.geom.Transform
flash.display.BitmapData.draw()
flash.display.Graphics.beginBitmapFill()
flash.display.Graphics.beginGradientFill()
flash.display.Graphics.lineGradientStyle()


パブリック プロパティ
 プロパティ定義元
  a : Number
Matrix オブジェクトの 1 行 1 列目の値です。イメージの拡大 / 縮小や回転を行う際に、x 軸方向のピクセルの位置に影響を与えます。
Matrix
  b : Number
Matrix オブジェクトの 1 行 2 列目の値です。イメージの回転や傾斜を行う際に、y 軸方向のピクセルの位置に影響を与えます。
Matrix
  c : Number
Matrix オブジェクトの 2 行 1 列目の値です。イメージの回転や傾斜を行う際に、x 軸方向のピクセルの位置に影響を与えます。
Matrix
 Inheritedconstructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
  d : Number
Matrix オブジェクトの 2 行 2 列目の値です。イメージの拡大 / 縮小や回転を行う際に、y 軸方向のピクセルの位置に影響を与えます。
Matrix
 Inheritedprototype : Object
[static] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
  tx : Number
x 軸方向に各ポイントを平行移動する距離です。
Matrix
  ty : Number
y 軸方向に各ポイントを平行移動する距離です。
Matrix
パブリック メソッド
 メソッド定義元
  
Matrix(a:Number = 1, b:Number = 0, c:Number = 0, d:Number = 1, tx:Number = 0, ty:Number = 0)
指定されたパラメータで新しい Matrix オブジェクトを作成します。
Matrix
  
新しい Matrix オブジェクトとして、この行列のクローンを返します。含まれるオブジェクトはまったく同じコピーになります。
Matrix
  
行列を現在の行列と連結して、2 つの行列の図形効果を効果的に組み合わせます。
Matrix
  
createBox(scaleX:Number, scaleY:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void
拡大 / 縮小、回転、平行移動に関するパラメータなどがあります。
Matrix
  
createGradientBox(width:Number, height:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void
Graphics クラスの beginGradientFill() メソッドで使用する特定のスタイルを作成します。
Matrix
  
変換前の座標空間内のポイントが指定されると、そのポイントの変換後の座標を返します。
Matrix
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
  
各行列プロパティを null 変換になる値に設定します。
Matrix
  
元の行列の逆の変形を実行します。
Matrix
 Inherited
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 Inherited
指定されたプロパティが存在し列挙できるかどうかを示します。
Object
  
rotate(angle:Number):void
Matrix オブジェクトに回転変換を適用します。
Matrix
  
行列に拡大 / 縮小の変換を適用します。
Matrix
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
  
Matrix オブジェクトのプロパティのリストを表すテキスト値を返します。
Matrix
  
Matrix オブジェクトで表現される図形変換を、指定されたポイントに適用したことによって値を返します。
Matrix
  
行列を x 軸と y 軸に沿って、dx パラメータと dy パラメータで指定された量だけ平行移動します。
Matrix
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
プロパティの詳細
aプロパティ
public var a:Number

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

Matrix オブジェクトの 1 行 1 列目の値です。イメージの拡大 / 縮小や回転を行う際に、x 軸方向のピクセルの位置に影響を与えます。



次の例では、Matrix オブジェクト myMatrix を作成し、a の値を設定します。
     import flash.geom.Matrix;
     
     var myMatrix:Matrix = new Matrix();
     trace(myMatrix.a);  // 1
     
     myMatrix.a = 2;
     trace(myMatrix.a);  // 2
     
bプロパティ 
public var b:Number

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

Matrix オブジェクトの 1 行 2 列目の値です。イメージの回転や傾斜を行う際に、y 軸方向のピクセルの位置に影響を与えます。



次の例では、Matrix オブジェクト myMatrix を作成し、b の値を設定します。
     import flash.geom.Matrix;
      
     var myMatrix:Matrix = new Matrix();
     trace(myMatrix.b);  // 0
     
     var degrees:Number = 30;
     var radians:Number = (degrees/180) * Math.PI;
     myMatrix.b = Math.tan(radians);
     trace(myMatrix.b);       // 0.5773502691896257
     
cプロパティ 
public var c:Number

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

Matrix オブジェクトの 2 行 1 列目の値です。イメージの回転や傾斜を行う際に、x 軸方向のピクセルの位置に影響を与えます。



次の例では、Matrix オブジェクト myMatrix を作成し、c の値を設定します。
     import flash.geom.Matrix;
     
     var myMatrix:Matrix = new Matrix();
     trace(myMatrix.c);  // 0
     
     var degrees:Number = 30;
     var radians:Number = (degrees/180) * Math.PI;
     myMatrix.c = Math.tan(radians);
     trace(myMatrix.c);  // 0.5773502691896257
     
dプロパティ 
public var d:Number

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

Matrix オブジェクトの 2 行 2 列目の値です。イメージの拡大 / 縮小や回転を行う際に、y 軸方向のピクセルの位置に影響を与えます。



次の例では、Matrix オブジェクト myMatrix を作成し、d の値を設定します。
     import flash.geom.Matrix;
     
     var myMatrix:Matrix = new Matrix();
     trace(myMatrix.d);  // 1
     
     myMatrix.d = 2;
     trace(myMatrix.d);  // 2
     
txプロパティ 
public var tx:Number

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

x 軸方向に各ポイントを平行移動する距離です。これは、Matrix オブジェクトの 1 行 3 列目の値に相当します。



次の例では、Matrix オブジェクト myMatrix を作成し、tx の値を設定します。
 
     import flash.geom.Matrix;
     
     var myMatrix:Matrix = new Matrix();
     trace(myMatrix.tx);  // 0
     
     myMatrix.tx = 50;  // 50
     trace(myMatrix.tx);
     
tyプロパティ 
public var ty:Number

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

y 軸方向に各ポイントを平行移動する距離です。これは、Matrix オブジェクトの 2 行 3 列目の値に相当します。



次の例では、Matrix オブジェクト myMatrix を作成し、ty の値を設定します。
   
     import flash.geom.Matrix;
     
     var myMatrix:Matrix = new Matrix();
     trace(myMatrix.ty);  // 0
     
     myMatrix.ty = 50;
     trace(myMatrix.ty);  // 50
     
コンストラクタの詳細
Matrix()コンストラクタ
public function Matrix(a:Number = 1, b:Number = 0, c:Number = 0, d:Number = 1, tx:Number = 0, ty:Number = 0)

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

指定されたパラメータで新しい Matrix オブジェクトを作成します。行列表記の場合、プロパティは次のようになります。

new Matrix() コンストラクタにパラメータが指定されない場合は、次の値で構成される単位マトリックス (単位行列) を作成します。

a = 1b = 0
c = 0d = 1
tx = 0ty = 0

行列表記の場合、単位行列は次のようになります。

パラメータ
a:Number (default = 1) — 新しい Matrix オブジェクトの 1 行 1 列目の値です。
 
b:Number (default = 0) — 新しい Matrix オブジェクトの 1 行 2 列目の値です。
 
c:Number (default = 0) — 新しい Matrix オブジェクトの 2 行 1 列目の値です。
 
d:Number (default = 1) — 新しい Matrix オブジェクトの 2 行 2 列目の値です。
 
tx:Number (default = 0) — 新しい Matrix オブジェクトの 1 行 3 列目の値です。
 
ty:Number (default = 0) — 新しい Matrix オブジェクトの 2 行 3 列目の値です。


次の例では、matrix_1 を作成する際に Matrix() コンストラクタにパラメータを渡していません。さらに、同じコンストラクタにパラメータを渡して matrix_2 を作成しています。パラメータを渡さずに作成した matrix_1 は、値 (a=1, b=0, c=0, d=1, tx=0, ty=0) を持つ単位行列です。
    import flash.geom.Matrix;
    
    var matrix_1:Matrix = new Matrix();
    trace(matrix_1);  // (a=1, b=0, c=0, d=1, tx=0, ty=0)
    
    var matrix_2:Matrix = new Matrix(1, 2, 3, 4, 5, 6);
    trace(matrix_2);  // (a=1, b=2, c=3, d=4, tx=5, ty=6)
    
メソッドの詳細
clone()メソッド
public function clone():Matrix

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

新しい Matrix オブジェクトとして、この行列のクローンを返します。含まれるオブジェクトはまったく同じコピーになります。

戻り値
Matrix — Matrix オブジェクト。
concat()メソッド 
public function concat(m:Matrix):void

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

行列を現在の行列と連結して、2 つの行列の図形効果を効果的に組み合わせます。数学的に言うと、2 つのマトリックスを連結することは、マトリックスの乗算を使って組み合わせることと同じです。

たとえば、行列 m1 はオブジェクトの大きさを 4 倍にし、行列 m2 はオブジェクトを 1.5707963267949 (Math.PI/2) ラジアン回転する場合、m1.concat(m2) は、オブジェクトの大きさを 4 倍にし、そのオブジェクトを Math.PI/2 ラジアン回転する行列に m1 を変換します。

このメソッドは、連結された行列でソース行列を置き換えます。2 つのソース行列をどちらも変更せずに 2 つの行列を連結する場合は、クラスの例に示されているように、まず clone() メソッドを使用して、ソース行列をコピーします。

パラメータ

m:Matrix — ソース行列に連結する行列です。

createBox()メソッド 
public function createBox(scaleX:Number, scaleY:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

拡大 / 縮小、回転、平行移動に関するパラメータなどがあります。行列に適用する際に、これらのパラメータに基づいて、行列の値を設定します。

createBox() メソッドを使用すると、identity()rotate()scale()translate() の各メソッドを続けて適用するのと効果が同じになる行列を取得できます。たとえば、mat1.createBox(2,2,Math.PI/4, 100, 100) は、以下と同じ効果になります。

     import flash.geom.Matrix;
          var mat1:Matrix = new Matrix();
     mat1.identity();
     mat1.rotate(Math.PI/4);
     mat1.scale(2,2);
     mat1.translate(10,20);
     

パラメータ

scaleX:Number — 水平方向の拡大 / 縮小倍率です。
 
scaleY:Number — 垂直方向の拡大 / 縮小倍率です。
 
rotation:Number (default = 0) — 回転量 (角度) です。
 
tx:Number (default = 0)x 軸に沿って右方向に平行移動 (移動) するピクセル数です。
 
ty:Number (default = 0)y 軸に沿って下方向に平行移動 (移動) するピクセル数です。

関連項目




次の例では、myMatrix の x の尺度、y の尺度、回転、x の位置および y の位置を、createBox() メソッドを呼び出すことで設定しています。

package
{
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.geom.Matrix;
    import flash.geom.Transform;
    
    public class Matrix_createBox extends Sprite
    {
        public function Matrix_createBox()
        {
             var myMatrix:Matrix = new Matrix();
             trace(myMatrix.toString());  // (a=1, b=0, c=0, d=1, tx=0, ty=0)
             
             myMatrix.createBox(1, 2, Math.PI/4, 50, 100);
             trace(myMatrix.toString());  
             // (a=0.7071067811865476, b=1.414213562373095, c=-0.7071067811865475, 
             //  d=1.4142135623730951, tx=100, ty=200)
             
             var rectangleShape:Shape = createRectangle(20, 80, 0xFF0000);   
             addChild(rectangleShape);
              
             var rectangleTrans:Transform = new Transform(rectangleShape);
             rectangleTrans.matrix = myMatrix;
        }
        
        public function createRectangle(w:Number, h:Number, color:Number):Shape 
        {
            var rect:Shape = new Shape();
            rect.graphics.beginFill(color);
            rect.graphics.drawRect(0, 0, w, h);
            addChild(rect);
            return rect;
        }
    }
}
createGradientBox()メソッド 
public function createGradientBox(width:Number, height:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

Graphics クラスの beginGradientFill() メソッドおよび lineGradientStyle() メソッドで使用する特定のスタイルを作成します。width と height は scaleXscaleY のペアで拡大 / 縮小されます。txty の値は、width と height の半分だけオフセットされます。

たとえば、次の性質を持つグラデーションを作成するとします。

パラメータの異なる createGradientBox() メソッドを使用して定義された行列のグラデーションは、次の図のとおりです。

createGradientBox() の設定グラデーションの結果
width = 25;
     height = 25; 
     rotation = 0; 
     tx = 0; 
     ty = 0;
width = 25; 
     height = 25; 
     rotation = 0; 
     tx = 25; 
     ty = 0;
width = 50; 
     height = 50; 
     rotation = 0; 
     tx = 0; 
     ty = 0;
width = 50;
     height = 50; 
     rotation = Math.PI / 4; // 45°
     tx = 0; 
     ty = 0;

パラメータ

width:Number — グラデーションボックスの幅です。
 
height:Number — グラデーションボックスの高さです。
 
rotation:Number (default = 0) — 回転量 (角度) です。
 
tx:Number (default = 0)x 軸に沿って右方向に平行移動 (移動) する距離 (ピクセル単位) です。この値は、width パラメータの半分だけオフセットされます。
 
ty:Number (default = 0)y 軸に沿って下方向に平行移動 (移動) する距離 (ピクセル単位) です。この値は、height パラメータの半分だけオフセットされます。

関連項目




次の例では、myMatrix の x の尺度、y の尺度、回転、x の位置および y の位置を、createBox() メソッドを呼び出すことで設定しています。

package
{
    import flash.display.GradientType;
    import flash.display.Sprite;
    import flash.geom.Matrix;
    
    public class Matrix_createGradientBox extends Sprite
    {
        public function Matrix_createGradientBox()
        {
             var myMatrix:Matrix = new Matrix();
             trace(myMatrix.toString());          // (a=1, b=0, c=0, d=1, tx=0, ty=0)
             
             myMatrix.createGradientBox(200, 200, 0, 50, 50);
             trace(myMatrix.toString());          // (a=0.1220703125, b=0, c=0, d=0.1220703125, tx=150, ty=150)
             
             var colors:Array = [0xFF0000, 0x0000FF];
             var alphas:Array = [100, 100];
             var ratios:Array = [0, 0xFF];
             
             this.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, myMatrix);
             this.graphics.drawRect(0, 0, 300, 200);
        }
    }
}
deltaTransformPoint()メソッド 
public function deltaTransformPoint(point:Point):Point

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

変換前の座標空間内のポイントが指定されると、そのポイントの変換後の座標を返します。transformPoint() メソッドを使用して適用される通常の変換とは異なり、deltaTransformPoint() メソッドの変換では平行移動パラメータ txty が考慮されません。

パラメータ

point:Point — 行列変換の結果として得られるポイントです。

戻り値
Point — 行列変換を適用した結果のポイントです。
identity()メソッド 
public function identity():void

Player のバージョン : Flash Player 9

各行列プロパティを null 変換になる値に設定します。単位行列を適用して変形したオブジェクトは、元のオブジェクトと同じになります。

identity() メソッドを呼び出すと、結果として得られる行列のプロパティは、a=1, b=0, c=0, d=1, tx=0, ty=0 になります。

行列表記の場合、単位行列は次のようになります。

invert()メソッド 
public function invert():void

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

元の行列の逆の変形を実行します。逆行列をオブジェクトに適用して、元の行列の適用時に実行された変換を取り消すことができます。




次の例では、halfScaleMatrix を作成するために invert() メソッド (doubleScaleMatrix) を呼び出しています。その後、この 2 つのマトリックスが他方のマトリックスの逆マトリックス、つまり、他方のマトリックスで実行された変換を取り消すマトリックスであることを originalAndInverseMatrix (noScaleMatrix と同等) を作成することによって示します。

package
{
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.geom.Matrix;
    import flash.geom.Transform;
    
    public class Matrix_invert extends Sprite
    {
        public function Matrix_invert()
        {
            var rect0:Shape = createRectangle(20, 80, 0xFF0000);   
            var rect1:Shape = createRectangle(20, 80, 0x00FF00);   
            var rect2:Shape = createRectangle(20, 80, 0x0000FF);
            var rect3:Shape = createRectangle(20, 80, 0x000000);
            
            var trans0:Transform = new Transform(rect0);
            var trans1:Transform = new Transform(rect1);
            var trans2:Transform = new Transform(rect2);
            var trans3:Transform = new Transform(rect3);
             
            var doubleScaleMatrix:Matrix = new Matrix(2, 0, 0, 2, 0, 0);
            trans0.matrix = doubleScaleMatrix;
            trace(doubleScaleMatrix.toString());  // (a=2, b=0, c=0, d=2, tx=0, ty=0)
             
            var noScaleMatrix:Matrix = new Matrix(1, 0, 0, 1, 0, 0);
            trans1.matrix = noScaleMatrix;
            rect1.x = 50;
            trace(noScaleMatrix.toString());  // (a=1, b=0, c=0, d=1, tx=0, ty=0)
             
            var halfScaleMatrix:Matrix = doubleScaleMatrix.clone();
            halfScaleMatrix.invert();
            trans2.matrix = halfScaleMatrix;
            rect2.x = 100;
            trace(halfScaleMatrix.toString());  // (a=0.5, b=0, c=0, d=0.5, tx=0, ty=0)
             
            var originalAndInverseMatrix:Matrix = doubleScaleMatrix.clone();
            originalAndInverseMatrix.concat(halfScaleMatrix);
            trans3.matrix = originalAndInverseMatrix;
            rect3.x = 150;
            trace(originalAndInverseMatrix.toString());  // (a=1, b=0, c=0, d=1, tx=0, ty=0)            
        }
        
        public function createRectangle(w:Number, h:Number, color:Number):Shape 
        {
            var rect:Shape = new Shape();
            rect.graphics.beginFill(color);
            rect.graphics.drawRect(0, 0, w, h);
            addChild(rect);
            return rect;
        }
    }
}
rotate()メソッド 
public function rotate(angle:Number):void

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

Matrix オブジェクトに回転変換を適用します。

rotate() メソッドは、Matrix オブジェクトの abc および d の各プロパティを変更します。行列表記の場合、これは現在の行列を次の行列と連結することと同じです。

パラメータ

angle:Number — 回転角度 (ラジアン単位) です。

関連項目

scale()メソッド 
public function scale(sx:Number, sy:Number):void

Player のバージョン : Flash Player 9

行列に拡大 / 縮小の変換を適用します。x 軸方向に sx 倍、y 軸方向に sy 倍に変更されます。

scale() メソッドは、Matrix オブジェクトの a プロパティと d プロパティを変更します。行列表記の場合、これは現在の行列を次の行列と連結することと同じです。

パラメータ

sx:Number — オブジェクトを x 軸方向に拡大 / 縮小するために使用される乗数です。
 
sy:Number — オブジェクトを y 軸方向に拡大 / 縮小するために使用される乗数です。

関連項目

toString()メソッド 
public function toString():String

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

Matrix オブジェクトのプロパティのリストを表すテキスト値を返します。

戻り値
String — Matrix オブジェクトのプロパティ (abcdtxty) の値が含まれるストリング。
transformPoint()メソッド 
public function transformPoint(point:Point):Point

Player のバージョン : Flash Player 9

Matrix オブジェクトで表現される図形変換を、指定されたポイントに適用したことによって値を返します。

パラメータ

point:Point — 行列変換の結果として得られるポイントです。

戻り値
Point — 行列変換を適用した結果のポイントです。
translate()メソッド 
public function translate(dx:Number, dy:Number):void

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

x 軸と y 軸に沿って、dx パラメータと dy パラメータで指定された量だけ行列を平行移動します。

パラメータ

dx:Numberx 軸に沿って右方向に移動する量 (ピクセル単位) です。
 
dy:Numbery 軸に沿って下方向に移動する量 (ピクセル単位) です。

関連項目

例の使用法
MatrixExample.as

次の例では、MatrixExample クラスを使用してグラデーション塗りの大きな正方形を作成する方法を示します。これを行うには、以下の手順を実行します。
  1. 新しい Matrix オブジェクト myMatrix を作成し、trace() メソッドを使用して、myMatrix オブジェクトのプロパティのデフォルト値を出力します。
  2. アプリケーションは、createGradientBox() を、width および height のパラメータを 200 ピクセル、回転なし、x 軸および y 軸に沿う平行移動距離を 50 ピクセルに設定して呼び出します。
  3. myMatrix オブジェクトを createGradientBox() の呼び出し後に再びプリントし、変更内容を表示します。
  4. 次の 3 つの変数を設定してグラデーションボックスを塗る方法を制御します。
    • colors : グラデーションカラーを赤から青の範囲で設定します。
    • alphas : 透明度を不透明に設定します。
    • ratios : カラーの分布を、赤と青が共に等しくなるように設定します。
  5. グラフィックメソッド beginGradientFill() を呼び出します。このメソッドは、myMatrix オブジェクトを操作し、lineTo() メソッドを呼び出して、グラデーション塗りの四角形を作成します。
package {
    import flash.geom.Matrix;
    import flash.display.Sprite;
    import flash.display.GradientType;

    public class MatrixExample extends Sprite {

        public function MatrixExample() {
            var myMatrix:Matrix = new Matrix();
            trace(myMatrix.toString());    // (a=1, b=0, c=0, d=1, tx=0, ty=0)

            myMatrix.createGradientBox(200, 200, 0, 50, 50);
            trace(myMatrix.toString());    // (a=0.1220703125, b=0, c=0, d=0.1220703125, tx=150, ty=150)

            var colors:Array = [0xFF0000, 0x0000FF];
            var alphas:Array = [100, 100];
            var ratios:Array = [0, 0xFF];
            graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, myMatrix);
            graphics.lineTo(0, 300);
            graphics.lineTo(300, 300);
            graphics.lineTo(300, 0);
            graphics.lineTo(0, 0);
        }
    }
}




Comments


mmjp_ps が Feb 12, 2008 の 5:21 PM に追加:
変換行列オブジェクトは、正しくは以下のとおりです。

a c t(x)
b d t(y)
u v w

もしくは

a b u
c d v
t(x) t(y) w

 

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

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/geom/Matrix.html