The section on drawing lines and curves
(see
Drawing lines and curves
) introduced the commands for drawing a single
line (
Graphics.lineTo()
) or curve (
Graphics.curveTo()
)
and then moving the line to another point (
Graphics.moveTo()
)
to form a shape. The
Graphics.drawPath()
and
Graphics.drawTriangles()
methods
accept a set of objects representing those same drawing commands
as a parameter. With these methods, you can provide a series of
Graphics.lineTo()
,
Graphics.curveTo()
,
or
Graphics.moveTo()
commands for the Flash runtime
to execute in a single statement.
The
GraphicsPathCommand
enumeration class
defines a set of constants that correspond to drawing commands.
You pass a series of these constants (wrapped in a Vector instance)
as a parameter for the
Graphics.drawPath()
method. Then
with a single command you can render an entire shape, or several
shapes. You can also alter the values passed to these methods to
change an existing shape.
In addition to the Vector of drawing commands, the
drawPath()
method needs
a set of coordinates that correspond to the coordinates for each
drawing command. Create a Vector instance containing coordinates
(Number instances) and pass it to the
drawPath()
method
as the second (
data
) argument.
Note:
The values in the vector are not Point objects; the vector
is a series of numbers where each group of two numbers represents
an x/y coordinate pair.
The
Graphics.drawPath()
method matches each
command with its respective point values (a collection of two or
four numbers) to generate a path in the Graphics object:
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);
}
}
}