Nesnelerle çalışma

ActionScript, nesne odaklı programlama dili olarak bilinir. Nesne odaklı programlama, bir programlama yaklaşımıdır. Bir programdaki kodu nesneler kullanarak organize etmekten daha fazlası değildir.

Daha önce "bilgisayar programı" terimi bilgisayarın gerçekleştirdiği bir dizi adım veya talimat olarak tanımlanmıştı. Bu durumda kavramsal olarak, bilgisayar programını tek bir uzun talimat listesi olarak düşünebilirsiniz. Ancak, nesne odaklı programlamada, program talimatları farklı nesneler arasında bölünmüştür. Kod işlevsellik öbekleri olarak gruplanır, böylece ilişkili işlevsellik türleri veya ilişkili bilgiler bir kapta gruplanır.

Adobe Flash Professional

Flash Professional'da sembollerle çalıştıysanız, nesnelerle de çalışmaya hazırsınız demektir. Bir dikdörtgen çizimi gibi bir film klibi sembolü tanımladığınızı ve bunun bir kopyasını Sahne Alanı'na yerleştirdiğinizi varsayın. Bu film klibi aynı zamanda (gerçekten) ActionScript'te bir nesnedir; MovieClip sınıfının bir örneğidir.

Film klibinin değiştirebileceğiniz çeşitli özellikleri vardır. Seçildiğinde, Özellik denetçisinden değerleri değiştirebilirsiniz. X koordinatı veya genişliği gibi. Alfasını (saydamlık) değiştirme veya alt gölge filtresi uygulama gibi çeşitli renk ayarlamaları da yapabilirsiniz. Diğer Flash Professional araçları, dikdörtgeni döndürmek için Serbest Dönüştürme aracının kullanılması gibi daha fazla değişiklik yapmanıza olanak tanır. Flash Professional'da bir film klibi sembolünü değiştirebileceğiniz tüm bu yollar ActionScript'te de mevcuttur. ActionScript'te bir film klibini, MovieClip nesnesi olarak adlandırılmış tek bir kümede bir araya getirilmiş veri parçalarını değiştirerek değiştirebilirsiniz.

ActionScript nesne odaklı programlamada, herhangi bir sınıfın içerebileceği üç özellik türü vardır:

  • Özellikler

  • Yöntemler

  • Olaylar

Bu öğeler, program tarafından kullanılan verileri yönetmek ve hangi eylemlerin ne sırada yapılacağına karar vermek için kullanılır.

Özellikler

Özellik, bir nesnede kümelenmiş olan verilerden birini temsil eder. Bir örnek şarkı nesnesi, artist ve title adında özelliklere sahip olabilir; MovieClip sınıfı rotation , x , width ve alpha gibi özelliklere sahiptir. Özellikler üzerinde ayrı ayrı değerler şeklinde çalışırsınız. Aslında, özellikleri bir nesnede bulunan "alt" değişkenler olarak düşünebilirsiniz.

Aşağıda, özellik kullanan birkaç ActionScript kodu örnekleri verilmiştir. Bu kod satırı, square adındaki MovieClip öğesini 100 piksel x koordinatına taşır:

square.x = 100;

Bu kod, triangle MovieClip öğesinin dönüşüyle eşleşecek şekilde square MovieClip öğesinin dönmesini sağlamak için rotation özelliğini kullanır:

square.rotation = triangle.rotation;

Bu kod, square MovieClip öğesinin eski halinden bir buçuk kat daha geniş olmasını sağlayacak şekilde yatay ölçeğini değiştirir:

square.scaleX = 1.5;

Yaygın yapıya dikkat edin: nesne adı olarak bir değişken ( square , triangle ) kullanırsınız, bunun ardından nokta ( . ) ve daha sonra özelliğin adı gelir ( X , rotation , scaleX ). Nokta operatörü olarak da bilinen nokta işareti, bir nesnenin alt öğelerinden birine erişmekte olduğunu belirtmek için kullanılır. Tüm yapı olduğu gibi "değişken adı-nokta-özellik adı", tek bir değişken gibi, bilgisayar belleğindeki tek bir değerin adı olarak kullanılır.

Yöntemler

Yöntem bir nesnenin gerçekleştirebileceği bir eylemdir. Örneğin, Flash Professional'da birkaç anahtar karesi ve zaman çizelgesinde animasyon olan bir film klibi sembolü yaptığınızı düşünün. Bu film klibi oynatılabilir, durdurulabilir veya oynatma kafasını belirli bir kareye getirmek için talimat verilebilir.

Bu kod, shortFilm adındaki MovieClip öğesine oynatmayı başlatmasını bildirir:

shortFilm.play();

Bu satır, shortFilm adındaki MovieClip öğesinin oynatmayı durdurmasını sağlar (oynatma kafası, video duraklatılmış gibi yerinde durdurulur):

shortFilm.stop();

Bu kod, shortFilm adındaki MovieClip öğesinin oynatma kafasını Kare 1'e taşıyıp oynatmayı durdurmasını sağlar (videoyu geri sarmak gibi):

shortFilm.gotoAndStop(1);

Yöntemlere de, tıpkı özellikler gibi sırayla nesnenin adı (bir değişken), ardından nokta işareti, yöntemin adı ve parantez işaretleri yazılarak erişilir. Parantezler, yöntemi çağırdığınızı veya başka bir deyişle nesneye o eylemi gerçekleştirmesini bildirdiğinizi belirtmenin yoludur. Bazen eylemi gerçekleştirmek için gerekli olan ek bilgileri iletmenin bir yolu olarak, değerler (veya değişkenler) parantez içine yerleştirilir. Bu değerler, yöntem parametreleri olarak bilinir. Örneğin, gotoAndStop() yönteminin hangi kareye gidileceği hakkında bilgiye ihtiyacı vardır, bu nedenle parantezin içinde tek bir parametre olmasını gerektirir. play() ve stop() gibi diğer yöntemler kendinden açıklayıcıdır ve bu nedenle de fazladan bilgi gerektirmez. Ancak yine de parantez içinde yazılır.

Özelliklerden (ve değişkenlerden) farklı olarak, yöntemler değer yer tutucuları olarak kullanılmaz. Ancak bazı yöntemler hesaplamalar gerçekleştirebilir ve bir değişken olarak kullanılabilecek bir sonuç döndürebilir. Örneğin, Number sınıfının toString() yöntemi, sayısal değeri metin olarak temsil edilen haline dönüştürür:

var numericData:Number = 9; 
var textData:String = numericData.toString();

Örneğin, Bir Number değişkeninin değerini ekranda bir metin alanında görüntülemek isterseniz, toString() yöntemini kullanırsınız. TextField sınıfının text özelliği bir Dize olarak tanımlanır, böylece yalnızca metin değerleri içerebilir. ( property metni ekranda görüntülenen gerçek metin içeriğini temsil eder). Kodun bu satırı numericData değişkenindeki sayısal değeri metne dönüştürür. Daha sonra değerin ekranda calculatorDisplay adlı TextField nesnesinde görünmesini sağlar:

calculatorDisplay.text = numericData.toString();

Olaylar

Bilgisayar programı, bilgisayarın adım adım gerçekleştirdiği bir talimatlar dizisidir. Bazı basit bilgisayar programları, bilgisayarın gerçekleştirdiği ve programı sona erdiren birkaç adımdan fazlasını içermez. Ancak, ActionScript programları sürekli çalışacak ve kullanıcı girdisinin veya başka şeylerin oluşmasını bekleyecek şekilde tasarlanmıştır. Olaylar, bilgisayarın hangi talimatları ne zaman gerçekleştireceğini belirleyen mekanizmadır.

Temel olarak olaylar , ActionScript'in farkında olduğu ve yanıt verdiği, gerçekleşen şeylerdir. Kullanıcının bir düğmeyi tıklatması veya klavyede bir tuşa basması gibi, çoğu olay kullanıcı etkileşimiyle ilişkilidir. Ayrıca başka olay türleri de vardır. Örneğin, harici bir görüntüyü yüklemek için ActionScript'i kullanırsanız, görüntü yüklemesinin bittiğini size bildiren bir olay meydana gelir. Bir ActionScript programı çalışırken, kavramsal olarak yalnızca belirli olayların meydana gelmesini bekler. Bunlar gerçekleştiğinde, o olaylar için belirlediğiniz ActionScript kodu çalışır.

Temel olay işleme

Belirli olaylara yanıt olarak gerçekleştirilecek belirli eylemleri belirtme tekniği, olay işleme olarak bilinir. Olay işleme gerçekleştirmek için ActionScript kodu yazarken tanımlamanız gereken üç önemli öğe vardır:

  • Olay kaynağı: Olayın gerçekleşeceği nesne hangisidir? Örneğin, hangi düğme tıklatıldı veya hangi Loader nesnesi görüntüyü yüklüyor? Olay kaynağı aynı zamanda olay hedefi olarak da bilinir. Bilgisayarın olayı hedeflediği nesne olduğu için bu ada sahiptir (yani, olayın gerçekten meydana geldiği yerdir).

  • Olay: Gerçekleşecek eylem, yanıt vermek istediğiniz eylem nedir? Birçok nesne çok sayıda olayı tetiklediğinden belirli bir olayın tanımlanması önemlidir.

  • Yanıt: Olay meydana geldiğinde hangi adımların gerçekleştirilmesini istiyorsunuz?

Olayları işlemek için ActionScript kodunu her yazdığınızda, şu üç öğeyi gereklidir: Kod şu temel yapıyı takip eder (kalın harfle yazılmış öğeler belirli durumunuz için dolduracağınız yer tutuculardır):

function eventResponse(eventObject:EventType):void 
{ 
    // Actions performed in response to the event go here. 
} 
  
eventSource.addEventListener(EventType.EVENT_NAME, eventResponse);

Bu kod iki işlem gerçekleştirir. İlk olarak, olaya yanıt olarak gerçekleştirilmesini istediğiniz eylemleri belirtmenin bir yolu olan bir işlevi tanımlar. Daha sonra, kaynak nesnenin addEventListener() yöntemini çağırır. addEventListener() yöntemini çağırmak esasında işlevi belirli olaya “kaydeder”. Olay meydana geldiğinde, işlevin eylemleri gerçekleştirilir. Bu parçaların her birini daha ayrıntılı şekilde ele alın.

İşlev , eylemleri gerçekleştirmek üzere kısa yol adı gibi tek bir ad ile eylemleri bir arada gruplandırmanız için bir yol sağlar. Belirli bir sınıfla ilişkide olmak zorunda olmaması dışında, işlev yönteme benzerdir. (Aslında, "yöntem" terimi belli bir sınıfla ilişkili olan bir işlev olarak tanımlanabilir.) Olay işleme için bir işlev oluştururken, işlevin adını seçersiniz (bu durumda eventResponse olarak adlandırılmıştır). Ayrıca tek bir parametre belirtirsiniz (bu örnekte eventObject adında). İşlev parametresinin belirtilmesi bir değişkenin belirtilmesine benzer, bu nedenle parametrenin veri türünü de belirtmeniz gerekir. (Bu örnekte, EventType parametrenin veri türüdür.)

Dinlemek istediğiniz her olay türünün kendisiyle ilişkilendirilmiş bir ActionScript sınıfı vardır. İşlev parametresi için belirttiğiniz veri türü her zaman yanıt vermek istediğiniz belirli bir olayın ilişkilendirilmiş sınıfıdır. Örneğin, click olayı (kullanıcı fareyle bir öğeyi tıklattığında tetiklenir), MouseEvent sınıfıyla ilişkilendirilir. click olayı için bir dinleyici işlevi yazmak üzere, MouseEvent veri türüne sahip bir parametreyle dinleyici işlevini tanımlarsınız. Son olarak, açma ve kapatma küme parantezleri arasına ( { ... } ), olay gerçekleştiğinde bilgisayarın uygulamasını istediğiniz talimatları yazarsınız.

Olay işleme işlevi yazılıdır. Daha sonra olay kaynak nesnesine (olayın gerçekleştiği nesne, örneğin düğme) olay gerçekleştiğinde işlevinizi çağırmak istediğinizi bildirirsiniz. Bu nesnenin addEventListener() yöntemini çağırarak işlevinizi olay kaynak nesnesiyle kaydedersiniz (bir olaya sahip tüm nesnelerde aynı zamanda addEventListener() yöntemi de vardır). addEventListener() yöntemi iki parametre alır:

  • İlk olarak, yanıt vermek istediğiniz belirli olayın adı. Her olay belirli bir sınıfla ilişkilidir. Her olay sınıfı özel bir değere sahiptir. Bunlar, olaylarından her biri için tanımlanmış benzersiz bir ad gibidir. Bu değeri ilk parametre için kullanırsınız.

  • İkinci olarak, olay yanıtı işlevinizin adı. İşlev adının parametre olarak iletildiğinde parantez olmadan yazıldığını unutmayın.

Olay işleme süreci

Aşağıda, bir olay dinleyicisi oluşturduğunuzda gerçekleşen işlemin adım adım bir açıklaması yer almaktadır. Bu durumda, myButton adındaki bir nesne tıklatıldığında çağrılan bir dinleyici işlevinin oluşturulması örneği yer almaktadır.

Programcı tarafından yazılan gerçek kod şu şekildedir:

function eventResponse(event:MouseEvent):void 
{ 
    // Actions performed in response to the event go here. 
} 
 
myButton.addEventListener(MouseEvent.CLICK, eventResponse);

Çalışırken bu kodun gerçekten işleme şekli şöyledir:

  1. SWF dosyası yüklendiğinde, bilgisayar, eventResponse() adında bir işlevin olduğunu not eder.

  2. Daha sonra bilgisayar, kodu (daha açık olmak gerekirse, işlevde olmayan kod satırlarını) çalıştırır. Bu durumda yalnızca bir kod satırı vardır: Olay kaynak nesnesinde ( myButton adlı) addEventListener() yöntemini çağırma ve parametre olarak eventResponse işlevini iletme.

    Dahili olarak myButton öğesi, olaylarının her birini dinleyen işlevlerin bir listesini tutar. addEventListener() yöntemi çağrıldığında, myButton öğesi eventResponse() işlevini olay dinleyicileri listesinde depolar.

  3. Bir noktada kullanıcı myButton nesnesini tıklatarak click olayını tetikler. (Kodda MouseEvent.CLICK olarak tanımlanmıştır.)

    Bu noktada şunlar gerçekleşir:

    1. Söz konusu olayla ilişkili sınıfın bir örneği olan bir nesne oluşturulur (bu örnekte MouseEvent). Birçok olay için, bu nesne Event sınıfının bir örneğidir. Fare olayları için, bu bir MouseEvent örneğidir. Diğer olaylar için, o olayla ilişkili bir sınıfın örneğidir. Oluşturulan bu nesne olay nesnesi olarak bilinir ve gerçekleşen olayla ilgili belirli bilgiler içerir: ne türde bir olay olduğu, nerede gerçekleştiği ve varsa diğer olaya özgü bilgiler.

    2. Daha sonra bilgisayar, myButton tarafından depolanan olay dinleyicileri listesine gözatar. Bu işlevlerde tek tek dolaşarak işlevlerin her birini çağırır ve olay nesnesini parametre olarak işleve iletir. eventResponse() işlevi, myButton öğesinin dinleyicilerinden biri olduğundan, bu işlemin bir parçası olarak bilgisayar eventResponse() işlevini çağırır.

    3. eventResponse() işlevi çağrıldığında, o işlevdeki kod çalıştırılır, böylece belirttiğiniz eylemler gerçekleştirilir.

Olay işleme örnekleri

Burada olay işleme kodu için daha somut örnekler bulabilirsiniz. Bu örnekler, size olay işleme kodu yazdığınızda karşınıza çıkabilecek yaygın olay öğeleri ve olası çeşitliliklerle ilgili bir fikir vermek içindir:

  • Geçerli film klibini oynatmaya başlamak için bir düğmeyi tıklatma. Aşağıdaki örnekte, playButton düğmenin örnek adı ve this öğesi de "geçerli nesne" anlamına gelen özel bir addır:

    this.stop(); 
     
    function playMovie(event:MouseEvent):void 
    { 
        this.play(); 
    } 
     
    playButton.addEventListener(MouseEvent.CLICK, playMovie);
  • Metin alanındaki yazıyı algılama. Bu örnekte, entryText bir girdi metni alanı ve outputText ise bir dinamik metin alanıdır:

    function updateOutput(event:TextEvent):void 
    { 
        var pressedKey:String = event.text; 
        outputText.text = "You typed: " + pressedKey; 
    } 
     
    entryText.addEventListener(TextEvent.TEXT_INPUT, updateOutput);
  • URL'ye gitmek için bir düğmeyi tıklatma. Bu durumda, linkButton düğmenin örnek adıdır:

    function gotoAdobeSite(event:MouseEvent):void 
    { 
        var adobeURL:URLRequest = new URLRequest("http://www.adobe.com/"); 
        navigateToURL(adobeURL); 
    } 
     
    linkButton.addEventListener(MouseEvent.CLICK, gotoAdobeSite);

Nesne örnekleri oluşturma

ActionScript'te bir nesneyi kullanabilmeniz için öncelikle nesnenin varolması gerekir. Nesne oluşturma işleminin bir bölümünü değişkenin bildirilmesi oluşturur; ancak bir değişken belirtildiğinde, bilgisayarın belleğinde boş alan açılır. Değişkeni kullanmadan veya işlemeden önce, her zaman değişkene gerçek bir değer atayın (bir nesne oluşturup bu nesneyi değişkende saklayın). Nesne oluşturma süreci örnekleme olarak bilinir. Başka bir deyişle, belirli bir sınıfın örneğini oluşturursunuz.

Nesne örneği oluşturmaya yönelik kolay yöntemlerin birine ActionScript dahil değildir. Flash Professional'da Sahne Alanı'na bir film klibi sembolü, düğme sembolü veya metin alanı yerleştirin ve bir örnek adı atayın. Flash Professional otomatik olarak o örnek adına sahip bir değişken belirler, bir nesne örneği oluşturur ve o nesneyi değişkende depolar. Benzer şekilde, Flex'te MXML'de bir bileşeni MXML etiketini kodlayarak veya bileşeni Flash Builder Design modunda editöre yerleştirerek oluşturursunuz. Bu bileşene bir kimlik atadığınızda, bu kimlik bileşen örneğini içeren bir ActionScript değişkeninin adı olur.

Ancak, her zaman bir nesneyi görsel olarak oluşturmak istemeyebilirsiniz ve görsel olmayan nesneler için de oluşturamazsınız. Yalnızca ActionScript'i kullanarak nesne örneği oluşturmanın bir kaç yolu daha vardır.

Birçok ActionScript veri türüyle, bir değişmez ifade (doğrudan ActionScript koduna yazılan bir değer) kullanarak bir örnek oluşturabilirsiniz. Aşağıda bazı örneklere yer verilmiştir:

  • Değişmez sayısal değer (doğrudan sayı girilir):

    var someNumber:Number = 17.239; 
    var someNegativeInteger:int = -53; 
    var someUint:uint = 22;
  • Değişmez String değeri (metin tırnak işareti içine alınır):

    var firstName:String = "George"; 
    var soliloquy:String = "To be or not to be, that is the question...";
  • Değişmez Boolean değeri ( true veya false değişmez değerleri kullanılır):

    var niceWeather:Boolean = true; 
    var playingOutside:Boolean = false;
  • Değişmez Array değeri (virgülle ayrılmış değerler listesi köşeli ayraç içine alınır):

    var seasons:Array = ["spring", "summer", "autumn", "winter"];
  • Değişmez XML değeri (doğrudan XML girilir):

    var employee:XML = <employee> 
            <firstName>Harold</firstName> 
            <lastName>Webster</lastName> 
        </employee>;

ActionScript ayrıca Array, RegExp, Object ve Function veri türleri için değişmez ifadeleri de tanımlar.

Burada gösterildiği gibi, herhangi bir veri türü için bir örnek oluşturmanın en yaygın yolu new operatörünü sınıf adıyla kullanmaktır:

var raceCar:MovieClip = new MovieClip(); 
var birthday:Date = new Date(2006, 7, 9);

new operatörü kullanılarak nesne oluşturulması genellikle "sınıfın yapıcısını çağırma" olarak tanımlanır. Yapıcı , bir sınıf örneği oluşturma işleminin parçası olarak çağrılan özel bir yöntemdir. Bu yolla bir örnek oluşturduğunuzda, sınıfın adından sonra parantez koymayı unutmayın. Bazen parantez içinde parametre değerleri belirlersiniz. Bu iki işlemi ayrıca bir yöntem çağırırken de gerçekleştirirsiniz.

Değişmez bir ifade kullanarak örnekler oluşturmanıza olanak sağlayan bu veri türleri için de bir nesne örneği oluşturmak üzere new operatörünü kullanabilirsiniz. Örneğin, bu iki kod satırı tamamen aynı işlemi gerçekleştirir:

var someNumber:Number = 6.33; 
var someNumber:Number = new Number(6.33);

Nesne oluşturmanın new ClassName () yolunun bilinmesi önemlidir. Birçok ActionScript veri türünün görsel temsili yoktur. Bu veriler sonuç olarak, Flash Professional Sahne Alanı'na veya Flash Builder'ın MXML editörünün Tasarım moduna bir öğe yerleştirilerek oluşturulamaz. ActionScript'te, bu veri türlerinin herhangi birinin örneğini new operatörünü kullanarak oluşturabilirsiniz.

Adobe Flash Professional

Flash Professional'da, new operatörü ayrıca Kütüphane'de tanımlanmış ancak Sahne Alanı'na yerleştirilmeyen bir film klibi sembolü örneği oluşturmak için de kullanılabilir.