ZeichenpfadeFlash Player 10 und höher, Adobe AIR 1.5 und höher Im Abschnitt zum Zeichnen von Linien und Kurven (siehe Zeichnen von Linien und Kurven) wurden die Befehle für das Zeichnen einer einzelnen Linie (Graphics.lineTo()) oder Kurve (Graphics.curveTo()) und für das Verschieben der Linie an einen anderen Punkt (Graphics.moveTo()) zum Erstellen von Formen vorgestellt. Bei einigen Verbesserungen der Zeichnungs-API von ActionScript, wie Graphics.drawPath() und Graphics.drawTriangles(), werden die vorhandenen Zeichnungsbefehle als Parameter verwendet. Sie können also eine Reihe von Graphics.lineTo()-, Graphics.curveTo()- oder Graphics.moveTo()-Befehlen für die Ausführung in der Flash-Laufzeitumgebung in einer einzigen Anweisung bereitstellen. Zwei Erweiterungen der Zeichnungs-API ermöglichen Graphics.drawPath() und Graphics.drawTriangles() die Konsolidierung von vorhandenen Befehlen:
Sie brauchen keine separaten Befehle für die einzelnen Segmente einer Form. Die Graphics.drawPath()-Methode konsolidiert zum Beispiel Graphics.moveTo(), Graphics.lineTo() und Graphics.curveTo() zu einer einzelnen Methode. Anstatt jede Methode separat aufzurufen, werden sie zu numerischen Bezeichnern abstrahiert wie in der GraphicsPathCommand-Klasse definiert. Eine moveTo()-Operation wird durch eine 1 gekennzeichnet, während eine lineTo()-Operation durch eine 2 gekennzeichnet ist. Speichern Sie ein Array dieser Werte in einem Vektor.<int>-Objekt, um sie im commands-Parameter zu verwenden. Erstellen Sie dann ein weiteres Array, das die Koordinaten in einem Vector.<Number>-Objekt für den data-Parameter enthält. Jeder GraphicsPathCommand-Wert entspricht den Koordinatenwerten, die im data-Parameter gespeichert sind, wobei zwei aufeinander folgende Zahlen eine Position im Koordinatenraum des Ziels definieren. Hinweis: Die Werte im Vektor sind keine Point-Objekte; der Vektor besteht aus einer Reihe von Zahlen, wobei jeweils zwei Zahlen ein x/y-Koordinatenpaar darstellen.
Die Graphics.drawPath()-Methode ordnet jeden Befehl den jeweiligen Punktwerten zu (einer Gruppe von zwei oder vier Zahlen), um im Graphics-Objekt einen Pfad zu erstellen: 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);
}
}
}
Im obigen Beispiel wird jeder Befehl und jedes Koordinatenpaar einzeln zugewiesen, um deren Position im Array anzuzeigen, aber sie können auch mit einer einzigen Anweisung zugewiesen werden. Das folgende Beispiel zeichnet denselben Stern, indem die Werte für die einzelnen Arrays mit einer einzigen push()-Anweisung zugewiesen werden. 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);
}
}
}
|
|