Caminhos de desenhoFlash Player 10 e posterior, Adobe AIR 1.5 e posterior 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. Algumas das melhorias da API de desenho do ActionScript, como Graphics.drawPath() e Graphics.drawTriangles(), utilizam os comandos de desenho existentes como parâmetros. Assim, você pode fornecer uma série de comandos Graphics.lineTo(), Graphics.curveTo() ou Graphics.moveTo() para o tempo de execução do Flash executar em uma única instrução. Dois dos aprimoramentos em APIs de desenho permitem que Graphics.drawPath() e Graphics.drawTriangles() consolidem comandos existentes:
Não é mais preciso separar comandos para cada segmento de uma forma. Por exemplo, o método Graphics.drawPath() consolida Graphics.moveTo(), Graphics.lineTo() e Graphics.curveTo() em um único método. Em vez de cada método ser chamado separadamente, eles são abstraídos em identificadores numéricos, conforme definido na classe GraphicsPathCommand. Uma operação moveTo() é representada por um 1, enquanto uma operação lineTo() é um 2. Armazene uma matriz desses valores em um objeto Vector.<int> para uso no parâmetro commands. Em seguida, crie outra matriz que contenha coordenadas em um objeto Vector.<Number> para o parâmetro data. Cada valor GraphicsPathCommand corresponde aos valores de coordenada armazenados no parâmetro de dados em que dois números consecutivos definem um local no espaço de coordenadas de destino. 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 square_commands:Vector.<int> = new Vector.<int>(5,true);
square_commands[0] = 1;//moveTo
square_commands[1] = 2;//lineTo
square_commands[2] = 2;
square_commands[3] = 2;
square_commands[4] = 2;
var square_coord:Vector.<Number> = new Vector.<Number>(10,true);
square_coord[0] = 20; //x
square_coord[1] = 10; //y
square_coord[2] = 50;
square_coord[3] = 10;
square_coord[4] = 50;
square_coord[5] = 40;
square_coord[6] = 20;
square_coord[7] = 40;
square_coord[8] = 20;
square_coord[9] = 10;
graphics.beginFill(0x442266);//set the color
graphics.drawPath(square_commands, square_coord);
}
}
}
No exemplo acima, cada comando e par de coordenadas são designados individualmente para mostrar sua posição na matriz, mas podem ser atribuídos em uma única instrução. O exemplo a seguir desenha a mesma estrela designando os valores para cada matriz em uma instrução push(): package{
import flash.display.*;
public class DrawPathExample extends Sprite {
public function DrawPathExample(){
var square_commands:Vector.<int> = new Vector.<int>();
square_commands.push(1, 2, 2, 2, 2);
var square_coord:Vector.<Number> = new Vector.<Number>();
square_coord.push(20,10, 50,10, 50,40, 20,40, 20,10);
graphics.beginFill(0x442266);
graphics.drawPath(square_commands, square_coord);
}
}
}
|
|