Grafik verisi sınıflarını kullanmaFlash 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. Şu sınıflar, IGraphicsData arabirimini uygular:
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:
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. |
|