Zeichenpfade

Flash 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:

  • Die GraphicsPathCommand-Aufzählungsklasse: Die GraphicsPathCommand-Klasse weist verschiedenen Zeichenbefehlen konstante Werte zu. Sie verwenden eine Reihe dieser Werte als Parameter für die Graphics.drawPath()-Methode. Mit einem einzelnen Befehl können Sie dann eine ganze Form oder mehrere Formen darstellen. Sie können die an diese Methoden übergebenen Werte auch dynamisch ändern, um eine vorhandene Form zu modifizieren.

  • Vektor-Array: Vektor-Arrays enthalten eine Reihe von Werten für einen bestimmten Datentyp. Sie speichern also eine Reihe von GraphicsPathCommand-Konstanten in einem Vector-Objekt und eine Reihe von Koordination in einem anderen Vector-Objekt. Mit Graphics.drawPath() oder Graphics.drawTriangles() werden diese Werte gemeinsam einem Zeichenpfad oder einer Form zugewiesen.

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); 
    } 
} 
}