ActionScript için kütüphane sembollerini dışa aktarma

Flash Player 9 ve üstü, Adobe AIR 1.0 ve üstü

Varsayılan olarak, bir Flash belgesinin kütüphanesindeki film klibi sembollerinin örnekleri dinamik olarak oluşturulamaz (başka bir deyişle, yalnızca ActionScript kullanılarak oluşturulur) Bunun nedeni, ActionScript'te kullanılmak üzere dışa aktarılan her sembolün SWF dosyanızın boyutunu artırması ve bazı sembollerin sahne alanında kullanılmak üzere tasarlanmamış olabilmesidir. Bu nedenle, bir sembolü ActionScript'te kullanılabilir duruma getirmek için, sembolün ActionScript için dışa aktarılması gerektiğini belirtmeniz gerekir.

ActionScript için bir sembolü dışa aktarmak üzere:

  1. Kütüphane panelinde sembolü seçin ve sembolün Sembol Özellikleri iletişim kutusunu açın.

  2. Gerekirse, Gelişmiş ayarları etkinleştirin.

  3. Bağlantı bölümünde, ActionScript için Dışa Aktar onay kutusunu etkinleştirin.

    Böylece Sınıf ve Temel Sınıf alanları etkinleştirilir.

    Varsayılan olarak Sınıf alanında boşlukları kaldırılmış şekilde sembol adı bulunur (örneğin, "Ağaç Ev" adındaki bir sembol, "AğaçEv" olur). Sembolün davranışı için özel bir sınıf kullanması gerektiğini belirtmek üzere, paketi de dahil olmak üzere sınıfın tam adını bu alana girin. ActionScript'te sembolün örneklerini oluşturabilmeyi istiyorsanız ancak ek bir davranış eklemeniz gerekmiyorsa, sınıf adını olduğu gibi bırakabilirsiniz.

    Temel Sınıf alanının değeri varsayılan olarak flash.display.MovieClip şeklindedir. Sembolünüzün başka bir müşteri sınıfının işlevselliğini genişletmesini istiyorsanız, bu sınıf Sprite (veya MovieClip) sınıfını genişlettiği sürece sınıfın adını belirtebilirsiniz.

  4. Değişiklikleri kaydetmek için Tamam düğmesine basın.

    Bu noktada Flash, belirtilen sınıfın bir tanımını içeren harici bir ActionScript dosyasını bulamazsa (örneğin, sembol için ek davranış eklemeniz gerekmediyse), bir uyarı görüntülenir:

    Bu sınıfın tanımı sınıf yolunda bulunamadı, bu yüzden tanım dışa aktarma sırasında SWF dosyasında otomatik olarak üretilecek.

    Kütüphane sembolünüz, MovieClip sınıfının işlevselliğinin ötesinde benzersiz bir işlevsellik gerektirmiyorsa, bu uyarıyı yoksayabilirsiniz.

Sembolünüz için bir sınıf sağlamazsanız, Flash uygulaması sembolünüz için buna eşdeğer bir sınıf oluşturur:

package 
{ 
    import flash.display.MovieClip; 
     
    public class ExampleMovieClip extends MovieClip 
    { 
        public function ExampleMovieClip() 
        { 
        } 
    } 
}

Sembolünüze fazladan bir ActionScript işlevselliği eklemek istiyorsanız, aşağıdaki kod yapısına uygun özellikleri ve yöntemleri ekleyin. Örneğin, 50 piksel genişliğinde ve 50 piksel yüksekliğinde daire içeren bir film klibi sembolünüz olduğunu ve sembolün Circle adındaki bir sınıfla ActionScript için dışa aktarılmak üzere belirtildiğini varsayın. Aşağıdaki kod, Circle.as dosyasına yerleştirildiğinde, MovieClip sınıfını genişletir ve sembole getArea() ve getCircumference() ek yöntemlerini sağlar:

package  
{ 
    import flash.display.MovieClip; 
     
    public class Circle extends MovieClip 
    { 
        public function Circle() 
        { 
        } 
         
        public function getArea():Number 
        { 
        // The formula is Pi times the radius squared. 
        return Math.PI * Math.pow((width / 2), 2); 
        } 
         
        public function getCircumference():Number 
        { 
        // The formula is Pi times the diameter. 
        return Math.PI * width; 
        } 
    } 
}

Flash belgesinin Kare 1'inde anahtar kareye yerleştirilen aşağıdaki kod, sembolün bir örneğini oluşturup ekranda görüntüler:

var c:Circle = new Circle(); 
addChild(c); 
trace(c.width); 
trace(c.height); 
trace(c.getArea()); 
trace(c.getCircumference());

Bu kod, tek tek varlıkların Sahne Alanı'na sürüklenmesine alternatif olarak ActionScript tabanlı başlatmayı gösterir. Bu, bir film klibinin tüm özelliklerine sahip olan ve Circle sınıfında tanımlanan özel yöntemleri de içeren bir daire oluşturur. Bu çok basit bir örnektir—kütüphane sembolünüz, sınıfında herhangi bir sayıda özellik ve yöntemleri belirtebilir.

ActionScript tabanlı başlatma, elle düzenlenmesi zor olacak büyük miktarda örnekleri dinamik olarak oluşturmanıza olanak sağladığından güçlüdür. Ayrıca oluşturma sırasında her örneğin özelliklerini özelleştirebildiğiniz için esneklik de sağlar. Dinamik olarak birçok Circle örneği oluşturmak için bir döngü kullanarak bu iki avantajı daha iyi kavrayabilirsiniz. Flash belgenizin kütüphanesinde önceden açıklanan Circle sembolü ve sınıfıyla, aşağıdaki kodu Kare 1'de bir anahtar kareye yerleştirin:

import flash.geom.ColorTransform; 
 
var totalCircles:uint = 10; 
var i:uint; 
for (i = 0; i < totalCircles; i++) 
{ 
    // Create a new Circle instance. 
    var c:Circle = new Circle(); 
    // Place the new Circle at an x coordinate that will space the circles 
    // evenly across the Stage. 
    c.x = (stage.stageWidth / totalCircles) * i; 
    // Place the Circle instance at the vertical center of the Stage. 
    c.y = stage.stageHeight / 2; 
    // Change the Circle instance to a random color 
    c.transform.colorTransform = getRandomColor(); 
    // Add the Circle instance to the current timeline. 
    addChild(c); 
} 
 
function getRandomColor():ColorTransform 
{ 
    // Generate random values for the red, green, and blue color channels. 
    var red:Number = (Math.random() * 512) - 255; 
    var green:Number = (Math.random() * 512) - 255; 
    var blue:Number = (Math.random() * 512) - 255; 
     
    // Create and return a ColorTransform object with the random colors. 
    return new ColorTransform(1, 1, 1, 1, red, green, blue, 0); 
}

Bu, kod kullanarak bir sembolün birden çok örneğini nasıl hızlı şekilde oluşturup özelleştirebileceğinizi gösterir. Her örnek, döngü içinde geçerli sayısı esas alınarak konumlandırılır ve transform özelliği (Circle öğesinin MovieClip sınıfını genişleterek miras aldığı özellik) ayarlanarak her örneğe rastgele bir renk verilir.