Grafik verisi sınıflarını kullanma

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

Gelişmiş çizim API'si, IGraphicsData arabirimini başlatan flash.display paketinde bir sınıf kümesi içerir. Bu sınıflar, çizim API'sinin çizim yöntemlerini temsil eden değer nesneleri (veri kapsayıcıları) olarak davranırlar.

Bu sınıflarla, IGraphicsData (Vector.<IGraphicsData>) türündeki bir Vektör nesnesinde eksiksiz bir çizimdepolayabilirsiniz. Ardından, bu grafik verilerini başka şekil örnekleri için veya çizim bilgilerini daha sonra kullanmak üzere depolama amacıyla veri kaynağı olarak yeniden kullanabilirsiniz.

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, kontur sınıfı ve dolgu sınıfıyla birlikte tam olarak tanımlanı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

Karşılık Gelen 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ı ya da güncellenmesi görevini kolaylaştırır.

Vektör grafik verileriyle çizim yapma

IGraphicsData örneklerinin bir koleksiyonuna sahip olduktan sonra, grafik oluşturmak için Graphics sınıfının drawGraphicsData() yöntemini kullanın. drawGraphicsData() yöntemi, IGraphicsData örneği vektöründeki bir çizim talimatı kümesini ardışık sırada uygular:

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

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.

Vektör grafik verilerini okuma

Flash Player 11.6'da ve Adobe AIR 3.6 ile üst sürümlerinde, bir görüntüleme nesnesine yönelik çizim vektör içeriğinin yanı sıra, bir görüntüleme nesnesinin vektör grafik içeriğine ilişkin veri temsili elde etmek üzere Graphics sınıfının readGraphicsData( ) yöntemini kullanabilirsiniz. Bu, çalışma zamanında hareketli grafik sayfası kaydetmek, kopyalamak, oluşturmak ve daha fazlasını yapmak üzere bir grafik anlık görüntüsü oluşturmak için kullanılabilir.

readGraphicsData() yöntemi çağrıldığında, IGraphicsData nesneleri içeren bir Vektör örneği döndürülür. Bunlar, drawGraphicsData() yöntemiyle vektör grafikleri çizmek için kullanılan aynı nesnelerdir.

Vektör grafiklerinin readGraphicsData() yöntemiyle okunmasına yönelik bazı sınırlamalar bulunur. Daha fazla bilgi için bkz. ActionScript Dil Başvurusu'nda readGraphicsData() girişi .