Homepage-Webhilfe Event-Banner

Grafik-API

Mit der graphics-Eigenschaft des Sprite-Objekts können wir ein Objekt der Graphics-Klasse abrufen, welches einige Funktionen zum Zeichnen von Formen und Pfaden zur Verfügung stellt. Mit Hilfe der Funktion beginFill() können wir die Füllfarbe einer Form festlegen. Als Parameter wird der Funktion der Farbwert (RGB-Wert) und optional der Alphawert (0.0 für 0% Deckkraft bis 1.0 für 100% Deckkraft) übergeben. Eine Füllung kann mit der Funktion endFill() beendet werden. Mit Hilfe der Funktion lineStyle() ist es möglich, die zu zeichnende Line für eine Form oder Linie festzulegen. Als Parameter können der Funktion die Breite, die Farbe und der Alphawert übergeben werden. Alle Parameter sind dabei optional. Ein Aufruf der Funktion ohne Parameter setzt die Linieneinstellung zurück. Um alle gezeichneten Grafiken sowie Füll- und Linieneinstellungen zurückzusetzen, können wir die Funktion clear() aufrufen.


Um Rechtecke zu zeichnen, stehen uns die drei Funktionen drawRect(), drawRoundRect() und drawRoundRectComplex() zur Verfügung. Allen Funktionen müssen vier Parameter übergeben werden: X-Position, Y-Position, Breite und Höhe. Der Funktion drawRoundRect() muss zusätzlich ein weiterer Parameter übergeben werden, in welchem die Breite der Abrundung der Ecken festgelegt wird. Als 6. optionaler Parameter kann die Höhe der Eckenabrundung festgelegt werden. Wird der Parameter weggelassen, so entspricht er der Breite der abgerundeten Ecken. Der Funktion drawRoundRectComplex() müssen zusätzlich zu den Positions- und Größenparameter die Radien aller 4 Ecken übergeben werden. Dabei gilt folgende Reihenfolge: oben links, oben rechts, unten links, unten rechts.

// Rotes Rechteck
graphics.beginFill(0xFF0000);
graphics.drawRect(50, 50, 300, 300);
graphics.endFill();

// Grünes Rechteck mit grauer Linie
graphics.lineStyle(10, 0xEEEEEE, 0.8);
graphics.beginFill(0x00FF00, 0.6);
graphics.drawRoundRect(200, 400, 500, 150, 25, 50);
graphics.endFill();

// Blaues Rechteck
graphics.lineStyle();
graphics.beginFill(0x0000FF, 0.2);
graphics.drawRoundRectComplex(450, 100, 200, 150, 40, 10, 20, 30);
graphics.endFill();
VorschauDownload

Einen Kreis können wir mittels der Funktion drawCircle() zeichnen. Der Funktion werden die X- und Y-Position sowie der Radius übergeben. Die Positionen beziehen sich dabei auf den Mittelpunkt des Kreises. Die Funktion drawEllipse() zeichnet eine Ellipse. Der Funktion werden die X- und Y-Position sowie die Breite und Höhe übergeben. Die Positionen beziehen sich hier, anders als bei der Funktion drawCircle(), auf die Ecke oben links des umliegenden Rechtecks.

graphics.beginFill(0xFF0000);
graphics.drawCircle(250, 250, 200);
graphics.endFill();

graphics.beginFill(0x0000FF);
graphics.drawEllipse(450, 400, 300, 150);
graphics.endFill();
VorschauDownload

Um komplexe Formen (dabei spricht man auch von Pfaden) zu zeichnen, können wir die Funktionen lineTo() und moveTo() benutzen. Die Funktion lineTo() zeichnet dabei eine Linie von dem vorherigen Punkt bis zu dem angegebenen Punkt. moveTo() hingegen springt lediglich von der alten zur neuen Position, ohne dabei eine Linie zu zeichnen. Beiden Funktionen wird als Parameter die X- und Y-Position übergeben. Eine Reihe von X- und Y-Positionen kann der Funktion drawPath() übergeben werden. Der Funktion wird ein Vektor mit Zeichen-Kommandos (Konstanten aus der GraphicsPathCommand-Klasse) und ein Vektor mit Positionen (X- und Y-Position jeweils nacheinander) übergeben. Die endFill()-Funktion zeichnet übrigens automatisch eine Linie zum Ausgangspunkt (siehe Beispiel).

Kurven können mittels den Funktionen curveTo() und cubicCurveTo() gezeichnet werden. Die Funktion curveTo() zeichnet eine quadratische Bézierkurve. Der Funktion wird die X- und Y-Position des Kontrollpunkts und des sogenannten Ankerpunkts übergeben. Der Ankerpunkt stellt dabei den Punkt dar, wo die Linie / Kurve endet. Die Funktion cubicCurveTo() zeichnet eine sogenannte kubische Bézierkurve. Als Parameter werden die Positionen zweier Kontrollpunkte sowie eines Ankerpunkts übergeben.

// Achteck oben links
graphics.beginFill(0xFF0000);
graphics.moveTo(50, 25);
graphics.lineStyle(5, 0x00FF00);
graphics.lineTo(100, 25);
graphics.lineStyle(5, 0x0000FF);
graphics.lineTo(125, 50);
graphics.lineStyle(5, 0x00FF00);
graphics.lineTo(125, 75);
graphics.lineStyle(5, 0x0000FF);
graphics.lineTo(100, 100);
graphics.lineStyle(5, 0x00FF00);
graphics.lineTo(50, 100);
graphics.lineStyle(5, 0x0000FF);
graphics.lineTo(25, 75);
graphics.lineStyle(5, 0x00FF00);
graphics.lineTo(25, 50);
graphics.lineStyle(5, 0x0000FF);
//graphics.lineTo(50, 25);		--> nicht notwendig, wird von endFill() automatisch ausgeführt
graphics.endFill();

// Achteck oben rechts
var achteckKommandos:Vector.<int> = new Vector.<int>(8, true);
var achteckPositionen:Vector.<Number> = new Vector.<Number>(16, true);
achteckKommandos[0] = GraphicsPathCommand.MOVE_TO;
for (var i:int = 1; i < 8; i++)
	achteckKommandos[i] = GraphicsPathCommand.LINE_TO;
achteckPositionen[0] = 250;		// X1
achteckPositionen[1] = 25;		// Y1
achteckPositionen[2] = 300;		// X2
achteckPositionen[3] = 25;		// Y2
achteckPositionen[4] = 325;		// X3
achteckPositionen[5] = 50;		// Y3
achteckPositionen[6] = 325;		// X4
achteckPositionen[7] = 75;		// Y4
achteckPositionen[8] = 300;		// X5
achteckPositionen[9] = 100;		// Y5
achteckPositionen[10] = 250;	// X6
achteckPositionen[11] = 100;	// Y6
achteckPositionen[12] = 225;	// X7
achteckPositionen[13] = 75;		// Y7
achteckPositionen[14] = 225;	// X8
achteckPositionen[15] = 50;		// Y8
graphics.lineStyle();
graphics.beginFill(0x0000FF);
graphics.drawPath(achteckKommandos, achteckPositionen);
graphics.endFill();

// Wellenlinie mitte mitte
graphics.lineStyle(1, 0x00FF00);
graphics.moveTo(100, 300);
graphics.curveTo(125, 325, 150, 300);
graphics.curveTo(175, 275, 200, 300);
graphics.curveTo(225, 325, 250, 300);
graphics.curveTo(275, 275, 300, 300);
graphics.curveTo(325, 325, 350, 300);
graphics.curveTo(375, 275, 400, 300);
graphics.curveTo(425, 325, 450, 300);
graphics.curveTo(475, 275, 500, 300);
graphics.curveTo(525, 325, 550, 300);
graphics.curveTo(575, 275, 600, 300);

// Wellenlinie unten mitte
graphics.lineStyle(1, 0x00FF00);
graphics.moveTo(100, 500);
graphics.cubicCurveTo(110, 525, 130, 520, 150, 500);
graphics.cubicCurveTo(170, 475, 190, 480, 200, 500);
graphics.cubicCurveTo(210, 525, 230, 530, 250, 500);
graphics.cubicCurveTo(270, 475, 290, 470, 300, 500);
graphics.cubicCurveTo(310, 525, 330, 520, 350, 500);
graphics.cubicCurveTo(370, 475, 390, 480, 400, 500);
graphics.cubicCurveTo(410, 525, 430, 530, 450, 500);
graphics.cubicCurveTo(470, 475, 490, 470, 500, 500);
graphics.cubicCurveTo(510, 525, 530, 520, 550, 500);
graphics.cubicCurveTo(570, 475, 590, 480, 600, 500);
VorschauDownload

Die Klasse Shape stellt ein einfaches Element zum Zeichnen dar. Die Shape-Klasse enthält, wie die Sprite-Klasse auch, die graphics-Eigenschaft. Dort können alle bekannte Funktionen verwendet werden. Der Vorteil beim Zeichnen auf ein Shape-Element an Stelle direkt auf das Sprite-Element zu zeichnen ist, dass wir mittels dieses Elements Zeichnungen gruppieren können. Wollen wir dann z. B. nur eine bestimmte Gruppe von Zeichnungen zurücksetzen, so rufen wir lediglich die clear()-Funktion dieses Shape-Elements auf. Alle anderen Zeichnungen, die einem anderen Shape-Element zugewiesen sind, bleiben dabei erhalten.

var form:Shape = new Shape();
form.graphics.beginFill(0xFF0000);
form.graphics.drawRect(50, 50, 300, 300);
form.graphics.endFill();
addChild(form);
VorschauDownload
Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen OK