Zeichnen von Linien und Kurven



Alle Zeichnungen mithilfe einer Graphics-Instanz beruhen auf dem Zeichnen von Linien und Kurven. Folglich müssen alle Zeichenvorgänge in ActionScript mit denselben Schritten durchgeführt werden:

  • Definieren von Linien- und Füllstilen

  • Festlegen der anfänglichen Zeichnungsposition

  • Zeichnen von Linien, Kurven und Formen (optional Verschieben des Zeichnungspunkts)

  • Gegebenenfalls Abschließen einer Füllung

Definieren von Linien- und Füllstilen

Um mithilfe der graphics-Eigenschaft einer Shape-, Sprite- oder MovieClip-Instanz zeichnen zu können, müssen Sie zunächst den Stil (Liniengröße und -farbe, Füllfarbe) festlegen, der beim Zeichnen verwendet wird. Wie bei der Verwendung der Zeichenwerkzeuge in Adobe® Flash® CS4 Professional oder einer anderen Zeichenanwendung können Sie beim Zeichnen mit ActionScript Zeichnungen mit oder ohne Strich sowie mit oder ohne Füllfarbe erstellen. Sie können das Erscheinungsbild der Striche mit der lineStyle()-Methode oder der lineGradientStyle()-Methode angeben. Mit der lineStyle()-Methode können Sie gefüllte Linien erstellen. Beim Aufrufen dieser Methode übergeben Sie in den meisten Fällen Werte für die ersten drei Parameter: Linienstärke, Farbe und Alpha. Mit der folgenden Codezeile werden beispielsweise mit dem Shape-Objekt myShape Linien gezeichnet, die eine Linienstärke von 2 Pixel, die Farbe Rot (0x990000) und eine Opazität von 75 % aufweisen:

myShape.graphics.lineStyle(2, 0x990000, .75);

Der Standardwert für den Alphaparameter ist 1,0 (100 %), daher müssen Sie diesen Parameter nicht angeben, wenn Sie eine vollständig undurchsichtige Linie erstellen möchten. Bei der lineStyle()-Methode können Sie zwei weitere Parameter für die Anzeige von Strichen als ganze Pixel und für den Skalierungsmodus angeben. Weitere Informationen zur Verwendung dieser Parameter finden Sie in der Beschreibung zur Graphics.lineStyle()-Methode im Komponenten-Referenzhandbuch für ActionScript 3.0.

Mit der lineGradientStyle()-Methode können Sie Farbverlaufslinien erstellen. Diese Methode wird unter Erstellen von Farbverlaufslinien und -füllungen beschrieben.

Wenn Sie eine gefüllte Form erstellen möchten, rufen Sie zunächst die Methode beginFill(), beginGradientFill() oder beginBitmapFill() oder beginShaderFill() auf und starten dann die Zeichnung. Die Basismethode beginFill() akzeptiert zwei Parameter: die Füllfarbe und (optional) einen Alphawert für die Füllfarbe. Wenn Sie z. B. eine Form mit einer einfarbigen grünen Füllung zeichnen möchten, verwenden Sie den folgenden Code (für ein Objekt mit dem Namen myShape):

myShape.graphics.beginFill(0x00FF00);

Durch Aufruf einer Füllmethode wird implizit eine bisherige Füllung beendet, bevor eine neue Füllung begonnen wird. Beim Aufrufen einer Methode, mit der ein Strichstil angegeben wird, wird der vorherige Strich ersetzt, während eine zuvor angegebene Füllung nicht geändert wird, und umgekehrt.

Nach dem Angeben des Linienstils und der Fülleigenschaften geben Sie als Nächstes den Anfangspunkt der Zeichnung an. Die Graphics-Instanz verfügt über einen Zeichnungspunkt, ähnlich der Zeichenstiftspitze auf dem Papier. Der jeweils nächste Zeichenvorgang beginnt an der entsprechenden Position des Zeichnungspunkts. In der Standardeinstellung befindet sich der Zeichnungspunkt eines Graphics-Objekts an der Position (0,0) des Koordinatenraums des gezeichneten Objekts. Wenn Sie die Zeichnung an einer anderen Position beginnen möchten, rufen Sie zunächst die moveTo()-Methode und anschließend eine der Zeichnungsmethoden auf. Dies entspricht dem Bewegen der Zeichenstiftspitze an eine andere Stelle auf dem Papier.

Ausgehend vom Zeichnungspunkt erstellen Sie Zeichnungen durch mehrere Aufrufe der Zeichnungsmethoden lineTo() (Zeichnen gerader Linien) und curveTo() (Zeichnen gekrümmter Linien).

Beim Zeichnen können Sie jederzeit die moveTo()-Methode aufrufen, um den Zeichnungspunkt an eine neue Position zu verschieben, ohne dabei zu zeichnen.

Wenn Sie beim Zeichnen eine Füllfarbe angeben, können Sie die Füllung in Adobe Flash Player oder Adobe® AIR™ durch Aufrufen der endFill()-Methode sperren. Wenn Sie keine geschlossene Form gezeichnet haben (d. h., wenn sich der Zeichnungspunkt beim Aufrufen von endFill() nicht am Anfangspunkt der Form befindet) und dann die endFill()-Methode aufrufen, wird die Form in Flash Player oder AIR automatisch geschlossen, indem eine gerade Linie vom aktuellen Zeichnungspunkt zu der Position gezogen wird, die beim letzten Aufruf von moveTo() angegeben wurde. Wenn Sie eine Füllung begonnen und endFill() nicht aufgerufen haben, wird durch Aufruf von beginFill() (oder einer der anderen Füllmethoden) die aktuelle Füllung beendet und eine neue Füllung begonnen.

Zeichnen gerader Linien

Durch Aufrufen der lineTo()-Methode wird mit dem Graphics-Objekt eine gerade Linie vom aktuellen Zeichnungspunkt zu den Koordinaten gezogen, die Sie als beide Parameter beim Aufruf der Methode angeben, und zwar mit dem angegebenen Linienstil. In der folgenden Codezeile wird der Zeichnungspunkt beispielsweise an die Position (100, 100) verschoben. Anschließend wird eine Linie zur Position (200, 200) gezogen:

myShape.graphics.moveTo(100, 100); 
myShape.graphics.lineTo(200, 200);

Im folgenden Beispiel werden rote und grüne Dreiecke mit einer Höhe von 100 Pixel erstellt:

var triangleHeight:uint = 100; 
var triangle:Shape = new Shape(); 
 
// red triangle, starting at point 0, 0 
triangle.graphics.beginFill(0xFF0000); 
triangle.graphics.moveTo(triangleHeight / 2, 0); 
triangle.graphics.lineTo(triangleHeight, triangleHeight); 
triangle.graphics.lineTo(0, triangleHeight); 
triangle.graphics.lineTo(triangleHeight / 2, 0); 
 
// green triangle, starting at point 200, 0 
triangle.graphics.beginFill(0x00FF00); 
triangle.graphics.moveTo(200 + triangleHeight / 2, 0); 
triangle.graphics.lineTo(200 + triangleHeight, triangleHeight); 
triangle.graphics.lineTo(200, triangleHeight); 
triangle.graphics.lineTo(200 + triangleHeight / 2, 0); 
 
this.addChild(triangle);

Zeichnen von Kurven

Mit der curveTo()-Methode wird eine quadratische Bézier-Kurve gezeichnet. Dabei wird ein Bogen erstellt, der zwei Punkte (die sogenannten Ankerpunkte) verbindet und sich gleichzeitig in Richtung eines dritten Punktes (dem sogenannten Kontrollpunkt) spannt. Im Graphics-Objekt dient die aktuelle Zeichnungsposition als erster Ankerpunkt. Beim Aufrufen der curveTo()-Methode werden vier Parameter übergeben: die x- und y-Koordinate des Kontrollpunkts, gefolgt von der x- und y-Koordinate des zweiten Ankerpunkts. Mit dem folgenden Code wird beispielsweise eine Kurve mit dem Anfangspunkt (100, 100) und dem Endpunkt (200, 200) gezeichnet. Da sich der Kontrollpunkt an Position (175, 125) befindet, wird eine Kurve erstellt, die nach rechts und dann nach unten gekrümmt ist:

myShape.graphics.moveTo(100, 100); 
myShape.graphics.curveTo(175, 125, 200, 200);

Im folgenden Beispiel werden rote und grüne kreisförmige Objekte mit einer Breite und Höhe von 100 Pixel erstellt. Beachten Sie, dass es sich aufgrund der Merkmale der quadratischen Bézier-Gleichung nicht um perfekt geformte Kreise handelt:

var size:uint = 100; 
var roundObject:Shape = new Shape(); 
 
// red circular shape 
roundObject.graphics.beginFill(0xFF0000); 
roundObject.graphics.moveTo(size / 2, 0); 
roundObject.graphics.curveTo(size, 0, size, size / 2); 
roundObject.graphics.curveTo(size, size, size / 2, size); 
roundObject.graphics.curveTo(0, size, 0, size / 2); 
roundObject.graphics.curveTo(0, 0, size / 2, 0); 
 
// green circular shape 
roundObject.graphics.beginFill(0x00FF00); 
roundObject.graphics.moveTo(200 + size / 2, 0); 
roundObject.graphics.curveTo(200 + size, 0, 200 + size, size / 2); 
roundObject.graphics.curveTo(200 + size, size, 200 + size / 2, size); 
roundObject.graphics.curveTo(200, size, 200, size / 2); 
roundObject.graphics.curveTo(200, 0, 200 + size / 2, 0); 
 
this.addChild(roundObject);