パスの描画

Flash Player 10 以降、Adobe AIR 1.5 以降

直線と曲線の描画に関する節( 線と曲線の描画 を参照)では、1 つの直線を描画するコマンド( Graphics.lineTo() )および曲線を描画するコマンド( Graphics.curveTo() )と、線を別の位置に移動してシェイプを形成するコマンド( Graphics.moveTo() )を紹介しました。 Graphics.drawPath() メソッドおよび Graphics.drawTriangles() メソッドは、これらの同じ描画コマンドを表す一連のオブジェクトをパラメーターとして受け入れます。これらのメソッドにより、一連の Graphics.lineTo() Graphics.curveTo() 、または Graphics.moveTo() コマンドが、Flash ランタイムで単一のステートメントとして実行されます。

GraphicsPathCommand 列挙クラスでは、描画コマンドに対応する一連の定数を定義します。これら一連の定数を、Vector インスタンスでラップして、 Graphics.drawPath() メソッドのパラメーターとして渡します。これにより、1 つのコマンドで、シェイプ全体または複数のシェイプをレンダリングできます。また、これらのメソッドに渡す値を変えて、既存のシェイプを変更することもできます。

描画コマンドの Vector に加えて、 drawPath() メソッドには、各描画コマンドの座標に対応する一連の座標も必要です。座標(Number インスタンス)を含む Vector インスタンスを作成し、 drawPath() メソッドに、2 つ目の( data )引数として渡します。

注意: ベクター内の値は Point オブジェクトではありません。ベクターを一連の数値であり、2 つの数値からなる各グループが、1 つの x/y 座標ペアを表します。

Graphics.drawPath() メソッドは、各コマンドとそれに対応するポイントの値(2 つまたは 4 つの値のコレクション)を一致させて、Graphics オブジェクトにパスを生成します。

package 
{ 
    import flash.display.*; 
     
    public class DrawPathExample extends Sprite 
    { 
        public function DrawPathExample(){ 
         
            var squareCommands:Vector.<int> = new Vector.<int>(5, true); 
            squareCommands[0] = GraphicsPathCommand.MOVE_TO; 
            squareCommands[1] = GraphicsPathCommand.LINE_TO; 
            squareCommands[2] = GraphicsPathCommand.LINE_TO; 
            squareCommands[3] = GraphicsPathCommand.LINE_TO; 
            squareCommands[4] = GraphicsPathCommand.LINE_TO; 
             
            var squareCoord:Vector.<Number> = new Vector.<Number>(10, true); 
            squareCoord[0] = 20; //x 
            squareCoord[1] = 10; //y 
            squareCoord[2] = 50; 
            squareCoord[3] = 10; 
            squareCoord[4] = 50; 
            squareCoord[5] = 40; 
            squareCoord[6] = 20; 
            squareCoord[7] = 40; 
            squareCoord[8] = 20; 
            squareCoord[9] = 10; 
         
            graphics.beginFill(0x442266);//set the color 
            graphics.drawPath(squareCommands, squareCoord); 
        } 
    } 
}