Grafik verisi sınıflarını kullanma

Flash Player 10 ve üstü, Adobe AIR 1.5 ve üstü

Gelişmiş çizim API'si, IGraphicsData (her sınıfın uyguladığı bir arabirim) türünün flash.display paketinde yeni bir sınıf koleksiyonu sunar. IGraphicsData arabirimini uygulayan sınıflar, çizim API'sinin yöntemleri için veri kabı görevi görür.

Bu sınıflarla, diğer şekil örnekleri için veri kaynağı olarak yeniden kullanılabilen IGraphicsData türündeki bir vektör nesnesi dizisinde (Vector.<IGraphicsData>) çizimlerin tamamını saklayabilir veya daha sonra kullanmak üzere çizim bilgilerini saklayabilirsiniz.

Her stil veya dolgu için birden çok dolgu sınıfınız olduğu halde yalnızca bir kontur sınıfına sahip olduğunuza dikkat edin. Kontur sınıfı kendi stilini tanımlamak için dolgu sınıflarını kullandığından, ActionScript, yalnızca bir kontur IGraphicsData sınıfına sahiptir. Bu nedenle her kontur gerçekte kontur sınıfı ve bir dolgu sınıfıdır. Ya da, bu grafik veri sınıflarının API'si, flash.display.Graphics sınıfında temsil ettikleri yöntemleri yansıtır:

Graphics Yöntemi

Data Sınıfı

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

Ayrıca, GraphicsPath sınıfının GraphicsPath örneği için bu komutları kolayca tanımlamak üzere kendi GraphicsPath.moveTo(), GraphicsPath.lineTo(), GraphicsPath.curveTo(), GraphicsPath.wideLineTo() ve GraphicsPath.wideMoveTo() yardımcı program yöntemleri vardır. Bu yardımcı program yöntemleri, komutların ve veri değerlerinin doğrudan tanımlanmasını ya da güncellenmesini kolaylaştırır.

IGraphicsData örneklerinin bir koleksiyonuna sahip olduktan sonra grafik oluşturmak için Graphics.drawGraphicsData() yöntemini kullanın. Graphics.drawGraphicsData() yöntemi, çizim API'si üzerinden sırayla IGraphicsData örneklerinin bir vektörünü çalıştırır:

// 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(1,2,2); 
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);

Daha karmaşık bir görüntü için, örnekteki çizim tarafından kullanılan yolda tek bir değer değiştirilerek şekil birden çok defa yeniden çizilebilir:

// 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 nesneleri dolgu ve kontur stillerini tanımlayabilse de, dolgu ve kontur stilleri bir gereklilik değildir. Başka bir deyişle, yolların kaydedilmiş bir koleksiyonunu çizmek için IGraphicsData nesneleri kullanılabilirken, stilleri ayarlamak için Graphics sınıfı yöntemleri kullanılabilir veya tam tersi de geçerlidir.

Not: Orijinal çizime ekleme yapmıyorsanız, yukarıdaki örnekte görüldüğü gibi, yenisine başlamadan önce bir önceki çizimi temizlemek için Graphics.clear() yöntemini kullanın. Bir yolun tek bir kısmını veya IGraphicsData nesnelerinin koleksiyonunu değiştirdiğinizde, değişiklikleri görmek için çizimin tamamını yeniden çizin.

Grafik veri sınıfları kullanılırken, şekil doğası gereği o noktada kapandığından, üç veya daha fazla nokta çizildiğinde dolgu oluşturulur. Dolgu kapansa da kontur kapanmaz ve bu davranış birden çok Graphics.lineTo() veya Graphics.moveTo() komutu kullanılırken gerçekleşen davranıştan farklıdır.