A seção sobre como desenhar linhas e curvas (consulte
Desenho de linhas e curvas
) apresentou os comandos usados para desenhar uma única linha (
Graphics.lineTo()
) ou curva (
Graphics.curveTo()
) e mover a linha até outro ponto (
Graphics.moveTo()
) para obter uma forma. Os métodos
Graphics.drawPath()
e
Graphics.drawTriangles()
aceitam um conjunto de objetos que representam os mesmos comandos de desenho como um parâmetro. Pelo uso desses métodos, você pode fornecer uma série de comandos
Graphics.lineTo()
,
Graphics.curveTo()
ou
Graphics.moveTo()
para que o runtime do Flash seja executado em uma única instrução.
A classe de enumeração
GraphicsPathCommand
define algumas constantes para comandos de desenho. Você transmite algumas dessas constantes (dispostas em uma instância de Vector) como um parâmetro para o método
Graphics.drawPath()
. Em seguida, com um único comando, você pode renderizar uma forma inteira ou várias formas. Também é possível alterar os valores transmitidos para esses métodos a fim de alterar uma forma existente.
Além do Vector de comandos de desenho, o método
drawPath()
precisa de algumas coordenadas que correspondam às coordenadas de cada comando de desenho. Crie uma instância de Vector contendo as coordenadas (ocorrências de Number) e transmita-a para o método
drawPath()
como o segundo argumento (
data
) .
Nota:
Os valores do vetor não são objetos Point; o vetor consiste em uma série de números em que cada grupo de dois números representa um par de coordenadas x/y.
O método
Graphics.drawPath()
compara cada comando com seus respectivos valores de ponto (uma coleção de dois ou quatro números) para gerar um caminho no objeto 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);
}
}
}