Yol Çizme

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

Çizgi ve eğrilerin çizilmesiyle ilgili bölümde (bkz.Çizgi ve eğriler çizme), tek bir çizgi (Graphics.lineTo()) veya eğri (Graphics.curveTo()) çizilmesine ve ardından bir şekil oluşturmak için çizginin başka bir noktaya hareket ettirilmesine (Graphics.moveTo()) yönelik komutlar açıklanmıştır. Graphics.drawPath() ve Graphics.drawTriangles() gibi bazı ActionScript çizim API iyileştirmeleri, parametre olarak mevcut çizim komutlarını kullanır. Bu durumda, Flash çalışma zamanının tek bir ifade içinde çalışması için Graphics.lineTo(), Graphics.curveTo(), veya Graphics.moveTo() komutlarından bir dizi menü sağlayabilirsiniz.

Çizim API'si geliştirmelerinden ikisi, Graphics.drawPath() ve Graphics.drawTriangles() komutlarının varolan komutları birleştirmesini sağlar:

  • GraphicsPathCommand numaralandırma sınıfı: GraphicsPathCommand sınıfı, birçok çizim komutunu sabit değerlerle ilişkilendirir. Graphics.drawPath() yöntemi için parametre olarak bu değerlerin bir dizisini kullanırsınız. Daha sonra tek bir komutla bir şeklin tamamını veya birçok şekil oluşturabilirsiniz. Ayrıca varolan bir şekli değiştirmek için bu yöntemlere iletilen değerleri dinamik olarak da değiştirebilirsiniz.

  • Vector dizileri: Vector dizileri, belirli bir veri türündeki değerler dizisini içerir. Bu nedenle, bir Vector nesnesine GraphicsPathCommand sabitlerinin bir dizisini ve başka bir Vector nesnesine de koordinatların bir dizisini saklarsınız. Graphics.drawPath() veya Graphics.drawTriangles() öğesi, bir çizim yolu veya şekil oluşturmak için bu değerleri birlikte atar.

Artık bir şeklin her parçası için ayrı komutlar gerekmez. Örneğin, Graphics.drawPath() yöntemi, Graphics.moveTo(), Graphics.lineTo() ve Graphics.curveTo() öğelerini tek bir yöntemde birleştirir. Her yöntemin ayrı ayrı çağrılması yerine, yöntemler GraphicsPathCommand sınıfında tanımlandığı gibi sayısal tanımlayıcılar halinde kısaltılır. moveTo() işlemi bir 1 değeriyle belirtilirken, lineTo() işlemi de 2 değeriyle belirtilir. Bu değerlerin dizisini bir Vector.<int> nesnesinde saklayarak commands parametresine kullanın. Daha sonra, bir Vector öğesinde koordinatlar içeren başka bir dizi oluşturun.data parametresi için bir Vector.<Number> nesnesindeki koordinatları içeren başka bir dizi oluşturun. Her GraphicsPathCommand değeri, art arda iki sayının hedef koordinat alanında bir konumu tanımladığı veri parametresinde saklanan koordinat değerlerine karşılık gelir.

Not: Vektördeki değerler Point nesneleri değildir; vektör, iki sayıdan oluşan her grubun bir x/y koordinat çiftini temsil ettiği sayılar dizisidir.

Graphics.drawPath() yöntemi, Graphics nesnesinde bir yol oluşturmak için her komutu ilgili nokta değerleriyle (iki veya dört sayıdan oluşan bir koleksiyon) eşleştirir:

package{ 
import flash.display.*; 
 
public class DrawPathExample extends Sprite { 
    public function DrawPathExample(){ 
 
    var square_commands:Vector.<int> = new Vector.<int>(5,true); 
    square_commands[0] = 1;//moveTo 
    square_commands[1] = 2;//lineTo 
    square_commands[2] = 2; 
    square_commands[3] = 2; 
    square_commands[4] = 2; 
 
    var square_coord:Vector.<Number> = new Vector.<Number>(10,true); 
    square_coord[0] = 20; //x 
    square_coord[1] = 10; //y 
    square_coord[2] = 50; 
    square_coord[3] = 10; 
    square_coord[4] = 50; 
    square_coord[5] = 40; 
    square_coord[6] = 20; 
    square_coord[7] = 40; 
    square_coord[8] = 20; 
    square_coord[9] = 10; 
 
    graphics.beginFill(0x442266);//set the color 
    graphics.drawPath(square_commands, square_coord); 
    } 
} 
}

Yukarıdaki örnekte, her komut ve koordinat çifti dizideki konumlarını göstermek için tek tek atanır, ancak bunlar tek bir bildirimde atanabilir. Aşağıdaki örnek, aynı yıldızı, her bir dizinin değerlerini tek bir push() bildiriminde atayarak çizer:

package{ 
import flash.display.*; 
 
public class DrawPathExample extends Sprite { 
    public function DrawPathExample(){ 
 
    var square_commands:Vector.<int> = new Vector.<int>(); 
    square_commands.push(1, 2, 2, 2, 2); 
    var square_coord:Vector.<Number> = new Vector.<Number>(); 
    square_coord.push(20,10, 50,10, 50,40, 20,40, 20,10); 
 
    graphics.beginFill(0x442266); 
    graphics.drawPath(square_commands, square_coord); 
    } 
} 
}