Verwenden von Graphics-Datenklassen

Flash Player 10 und höher, Adobe AIR 1.5 und höher

Die optimierte Zeichnungs-API enthält eine Reihe von Klassen im flash.display-Paket, die die IGraphicsData -Schnittstelle implementieren. Diese Klassen agieren als Wertobjekte (Datencontainer), die die Zeichnungsmethoden der Zeichnungs-API darstellen.

Mit diesen Klassen können Sie vollständige Zeichnungen in einem Vector-Objekt des Typs IGraphicsData (Vector.<IGraphicsData>) speichern. Sie können die Grafikdaten anschließend als Datenquelle für andere Formen oder zum Speichern von Zeicheninformationen zur späteren Verwendung nutzen.

Beachten Sie, dass es für jeden Füllstil mehrere Füllklassen gibt, aber nur eine Strichklasse. ActionScript verfügt nur über eine IGraphicsData-Strichklassen, dass die Strichklasse die Füllklassen zur Definition des Stils verwendet. Somit ist jeder Strich durch eine Kombination aus Strichklasse und Füllklasse definiert. Die APIs für diese Graphics-Datenklassen spiegeln die Methoden, die sie repräsentieren, in der flash.display.Graphics-Klasse:

Graphics-Methode

Entsprechende Klasse

beginBitmapFill()

GraphicsBitmapFill

beginFill()

GraphicsSolidFill

beginGradientFill()

GraphicsGradientFill

beginShaderFill()

GraphicsShaderFill

lineBitmapStyle()

GraphicsStroke + GraphicsBitmapFill

lineGradientStyle()

GraphicsStroke + GraphicsGradientFill

lineShaderStyle()

GraphicsStroke + GraphicsShaderFill

lineStyle()

GraphicsStroke + GraphicsSolidFill

moveTo()

lineTo()

curveTo()

drawPath()

GraphicsPath

drawTriangles()

GraphicsTrianglePath

Zusätzlich verfügt die GraphicsPath -Klasse über eigene Methoden GraphicsPath.moveTo() , GraphicsPath.lineTo() , GraphicsPath.curveTo() , GraphicsPath.wideLineTo() und GraphicsPath.wideMoveTo() , um diese Befehle einfach für eine GraphicsPath-Instanz zu definieren. Diese Dienstprogrammmethoden vereinfachen das direkte Definieren oder Aktualisieren der Befehle und Datenwerte.

Zeichnen mit Vektorgrafikdaten

Nachdem Sie über eine Reihe von IGraphicsData-Instanzen verfügen, verwenden Sie drawGraphicsData() -Methoden der Graphics-Klasse, um die Grafiken darzustellen. Die drawGraphicsData() -Methode führt nacheinander mehrere Zeichnungsanweisungen eines Vektors von IGraphicsData-Instanzen aus:

// stroke object 
var stroke:GraphicsStroke = new GraphicsStroke(3); 
stroke.joints = JointStyle.MITER; 
stroke.fill = new GraphicsSolidFill(0x102020);// solid stroke 
 
// fill object 
var fill:GraphicsGradientFill = new GraphicsGradientFill(); 
fill.colors = [0x0000FF, 0xEEFFEE]; 
fill.matrix = new Matrix(); 
fill.matrix.createGradientBox(70, 70, Math.PI/2); 
// path object 
var path:GraphicsPath = new GraphicsPath(new Vector.<int>(), new Vector.<Number>()); 
path.commands.push(GraphicsPathCommand.MOVE_TO, GraphicsPathCommand.LINE_TO, GraphicsPathCommand.LINE_TO); 
path.data.push(125,0, 50,100, 175,0); 
 
// combine objects for complete drawing 
var drawing:Vector.<IGraphicsData> = new Vector.<IGraphicsData>(); 
drawing.push(stroke, fill, path); 
 
// draw the drawing 
graphics.drawGraphicsData(drawing);

Indem Sie einen Wert im Pfad, der von der Zeichnung verwendet wird, ändern, kann die Form mehrere Male neu gezeichnet werden, um ein komplexeres Bild zu erstellen:

// draw the drawing multiple times 
// change one value to modify each variation 
graphics.drawGraphicsData(drawing); 
path.data[2] += 200; 
graphics.drawGraphicsData(drawing); 
path.data[2] -= 150; 
graphics.drawGraphicsData(drawing); 
path.data[2] += 100; 
graphics.drawGraphicsData(drawing); 
path.data[2] -= 50;graphicsS.drawGraphicsData(drawing);

IGraphicsData-Objekte können zwar Füll- und Strichstile definieren, diese Stile sind jedoch nicht unbedingt erforderlich. Anders ausgedrückt lassen sich Methoden der Graphics-Klasse verwenden, um Stile festzulegen, während IGraphicsData-Objekte verwendet werden, um eine gespeicherte Sammlung von Pfaden zu zeichnen oder umgekehrt.

Hinweis: Verwenden Sie die Graphics.clear() -Methode, um eine vorherige Zeichnung zu löschen, bevor eine neue begonnen wird, es sei denn, Sie fügen der Originalzeichnung etwas hinzu wie im Beispiel oben. Wenn Sie einen Teil eines Pfades oder einer Sammlung von IGraphicsData-Objekten ändern, zeichnen Sie die gesamte Zeichnung neu, um die Änderungen zu sehen.

Wenn Sie Graphics-Datenklassen verwenden, wird die Füllung dargestellt, wenn drei oder mehr Punkte gezeichnet werden, da die Form an diesem Punkt inherent geschlossen ist. Auch wenn die Füllung geschlossen wird, wird es der Strich nicht. Dieses Verhalten unterscheidet sich von der Verwendung der Befehle Graphics.lineTo() oder Graphics.moveTo() .

Lesen von Vektorgrafikdaten

Zusätzlich zum Zeichnen von Vektorinhalten in ein Anzeigeobjekt können Sie in Flash Player 11.6 und Adobe AIR 3.6 (und höher) mithilfe der readGraphicsData( )-Methode der Graphics-Klasse eine Datendarstellung der Vektorgrafikinhalte eines Anzeigeobjekts abrufen. Sie können damit einen Schnappschuss einer Grafik erstellen, um etwa zur Laufzeit ein Spritesheet zu speichern, zu kopieren oder zu erstellen.

Durch das Abrufen der readGraphicsData() -Methode wird eine Vector-Instanz mit IGraphicsData-Objekten zurückgegeben. Es handelt sich dabei um dieselben Objekte, mit denen mithilfe der drawGraphicsData() -Methode Vektorgrafiken gezeichnet wurden.

Es bestehen jedoch mehrere Einschränkungen für das Lesen von Vektorgrafiken mit der readGraphicsData() -Methode. Weitere Informationen finden Sie im readGraphicsData()-Eintrag im ActionScript-Referenzhandbuch .