I avsnittet om att rita linjer och kurvor (se
Rita linjer och kurvor
) introduceras kommandon för att rita en enskild linje (
Graphics.lineTo()
) eller kurva (
Graphics.curveTo()
) och sedan flytta linjen till en annan punkt (
Graphics.moveTo()
) för att skapa en form. Metoderna
Graphics.drawPath()
och
Graphics.drawTriangles()
accepterar en uppsättning med objekt som motsvarar samma ritkommandon som en parameter. Med de här metoderna kan du skapa en serie av
Graphics.lineTo()
-,
Graphics.curveTo()
- eller
Graphics.moveTo()
-kommandon som Flash-miljön kör i en enda sats.
Uppräkningsklassen
GraphicsPathCommand
definierar en uppsättning konstanter som motsvarar ritkommandon. Du skickar en serie med dessa konstanter (omslutna av en Vector-instans) som en parameter för metoden
Graphics.drawPath()
. Sedan kan du med ett enda kommando återge hela formen eller flera former. Du kan också ändra värdena som skickas till dessa metoder om du vill ändra en befintlig form.
Utöver vektorn med ritkommandon behöver metoden
drawPath()
även en uppsättning koordinater som motsvarar koordinaterna för varje enskilt ritkommando. Skapa en Vector-instans som innehåller koordinater (Number-instanser) och skicka den till metoden
drawPath()
som det andra (
data
)-argumentet.
Obs!
Värdena i vektorn är inte Point-objekt. Vektorn är en serie siffror där varje grupp med två siffror representerar ett par med x/y-koordinater.
Metoden
Graphics.drawPath()
matchar varje kommando mot respektive punktvärde (en mängd med två eller flera siffror) för att skapa en bana i Graphics-objektet:
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);
}
}
}