10. 1
Bölüm 1: Bu kılavuz hakkında
Bu kılavuz Adobe® ActionScript® 3.0'da uygulama geliştirmek için gerekli olan temel bilgileri sunar. Açıklanan fikir ve
teknikleri en iyi şekilde anlayabilmek için veri türleri, değişkenler, döngüler ve işlevler gibi genel programlama
kavramlarını bilmeniz gerekmektedir. Ayrıca sınıflar ve miras alma gibi nesne tabanlı temel programlama
kavramlarını da anlıyor olmanız gerekir. ActionScript 1.0 veya ActionScript 2.0 bilgisi işinize yarayacak olsa da şart
değildir.
Bu kılavuzu kullanma
Bu kılavuzun bölümleri ActionScript belgelerinin ilgili kısımlarını daha kolay bulmanız için aşağıdaki mantıksal
gruplara ayrılmıştır:
Bu kılavuz ayrıca önemli veya sık kullanılan sınıflar için uygulama programlama kavramlarını gösteren sayısız örnek
dosya içerir. Örnek dosyalar Adobe® Flash® CS4 Professional ile daha kolay yüklenecek ve kullanılabilecek şekilde
paketlenmiştir ve saran dosyalar içerebilir. Ancak, örnek kodun temeli istediğiniz geliştirme ortamında
kullanabileceğiniz ActionScript 3.0 biçimindedir.
ActionScript 3.0 şunlar da dahil olmak üzere birden fazla şekilde yazılabilir ve derlenebilir:
• Adobe Flex Builder 3 geliştirme ortamını kullanma
• Flex Builder 3 ile birlikte verilen gibi herhangi bir metin düzenleyici ve komut satırı derleyici kullanma
• Adobe® Flash® CS4 Professional geliştirme aracını kullanma
ActionScript geliştirme ortamları ile ilgili daha fazla bilgi için “ActionScript 3.0'a giriş” sayfa 4 bölümüne bakın.
Bu kılavuzdaki kod örneklerini anlamak için Flex Builder veya Flash geliştirme aracı gibi ActionScript için dahili
geliştirme ortamları tecrübeniz olması gerekli değildir. Ancak bu araçlarla ActionScript 3.0 kodu yazmayı ve derlemeyi
öğrenmek için ilgili araçların belgelerine başvurmak isteyeceksiniz. Daha fazla bilgi için bkz. “ActionScript belgelerine
erişim” sayfa 2.
Bölümler Açıklama
Bölüm 2-5, ActionScript programlamaya genel bakış Dil sözdizimi, deyimler, operatörler ve nesne tabanlı ActionScript programlama gibi
temel ActionScript 3.0 kavramlarını ele alır.
Bölüm 6-11, temel ActionScript 3.0 veri türleri ve
sınıfları
ActionScript 3.0'daki üst düzey veri türlerini açıklar.
Bölüm 12-32, Flash Player ve Adobe AIR API'leri Olay işleme, görüntüleme nesneleri ve görüntüleme listesiyle çalışma, ağ ve
iletişimler, dosya girdisi ve çıktısı, harici arabirim, uygulama güvenlik modeli ve
bunlar gibi Adobe Flash Player ve Adobe AIR uygulamasına özgü paket ve sınıflarda
uygulanan önemli özellikleri açıklar.
11. 2FLASH IÇIN ACTIONSCRIPT 3.0 PROGRAMLAMA
Bu kılavuz hakkında
ActionScript belgelerine erişim
Bu kılavuz ağırlıklı olarak zengin ve güçlü bir nesne tabanlı programlama dili olan ActionScript 3.0'ı anlattığı için
belirli bir araç veya sunucu mimarisi içerisindeki uygulama geliştirme sürecine veya iş akışına geniş yer vermez. Bu
nedenle, ActionScript 3.0'ı Programlama'nın yanı sıra, ActionScript 3.0 uygulamalarının tasarlama, geliştirme, test
etme ve konuşlandırma sürecinde diğer belgelere de başvurmak isteyeceksiniz.
ActionScript 3.0 belgeleri
Bu kılavuz size ActionScript 3.0 programlama dilinin altındaki kavramları tanıtır ve dilin önemli özelliklerini gösteren
uygulama detayları ve örnekleri sunar. Ancak, bu kılavuz tam bir dil başvurusu değildir. Bu nedenle, dil içindeki her
sınıfı, yöntemi, özelliği ve olayı anlatan ActionScript 3.0 Dil ve Bileşen Başvurusu bölümünü inceleyin. ActionScript
3.0 Dil ve Bileşenler Başvurusu, temel dil, Flash geliştirme aracı bileşenleri (fl paketlerindeki) ve Flash Player ve Adobe
AIR API'leri (flash paketlerindeki) ile ilgili ayrıntılı başvuru bilgisi sunar.
Flash belgeleri
Flash geliştirme aracını kullanıyorsanız, şu kılavuzlara başvurmak isteyebilirsiniz:
Kitap Açıklama
Flash'ı kullanma Flash geliştirme aracında dinamik web uygulamalarınızı nasıl geliştireceğinizi
açıklar
ActionScript 3.0'ı Programlama ActionScript 3.0 dili ve temel Flash Player ve Adobe AIR API'sinin belirli kullanımını
açıklar
ActionScript 3.0 Dil ve Bileşenler Başvurusu Flash geliştirme aracı bileşenleri ve ActionScript 3.0 API'si için sözdizimi, kullanım
ve kod örnekleri sunar
ActionScript 3.0 Bileşenlerini Kullanma Flash tarafından oluşturulan uygulamaları geliştirmek için bileşenlerin
kullanımıyla ilgili ayrıntıları açıklar
Flash CS4 Professional ile Adobe AIR Uygulamaları
Geliştirme
Flash içinde ActionScript 3.0 ve Adobe AIR API'si kullanılarak Adobe AIR
uygulamalarının nasıl geliştirileceğini ve konuşlandırılacağını anlatır
Adobe Flash içinde ActionScript 2.0 Öğrenme ActionScript 2.0 sözdizimine genel bir bakış sunar ve farklı nesne türleri ile
çalışırken ActionScript 2.0'ın nasıl kullanılacağını açıklar
ActionScript 2.0 Dil Başvurusu Flash geliştirme aracı bileşenleri ve ActionScript 2.0 API'si için sözdizimi, kullanım
ve kod örnekleri sunar
ActionScript 2.0 Bileşenlerini Kullanma Flash tarafından oluşturulan uygulamaları geliştirmek için ActionScript 2.0
bileşenlerinin nasıl kullanılacağını ayrıntılı şekilde açıklar
ActionScript 2.0 Bileşenleri Dil Başvurusu Sürüm 2 Adobe Bileşen Mimarisi ve ilgili API içerisinde bulunan bileşenleri anlatır
Flash'ı Genişletme Javascript API'si içerisindeki nesneleri, yöntemleri ve özellikleri anlatır
Flash Lite 2.x ile Çalışmaya Başlama Uygulama geliştirmek için Adobe® Flash® Lite™ 2.x uygulamasının nasıl
kullanılacağını açıklar ve Flash Lite 2.x ile kullanılabilen ActionScript özellikleri için
sözdizimi, kullanım ve kod örnekleri sunar
Flash Lite 2.x Uygulamaları Geliştirme Flash Lite 2.x uygulamalarının nasıl geliştirileceğini açıklar
Flash Lite 2.x ActionScript'e Giriş Flash Lite 2.x ile nasıl uygulama geliştirileceğini gösterir ve Flash Lite 2.x
geliştiricilerinin kullanabildiği tüm ActionScript özelliklerini anlatır
Flash Lite 2.x ActionScript Dil Başvurusu) Flash Lite 2.x içinde bulunan ActionScript 2.0 API'si için sözdizimi, kullanım ve kod
örneği sunar.
12. 3FLASH IÇIN ACTIONSCRIPT 3.0 PROGRAMLAMA
Bu kılavuz hakkında
ActionScript öğrenme kaynakları
Bu kılavuzlara ek olarak Adobe, Adobe Geliştirici Merkezi ve Adobe Tasarım Merkezi'nde düzenli olarak güncellenen
makaleler, tasarım fikirleri ve örnekler sunar.
Adobe Geliştirici Merkezi
Adobe Geliştirici Merkezi'nde ActionScript ile ilgili en son bilgiler, gerçek dünya uygulama geliştirme üzerine
makaleler ve önemli yeni konular ile ilgili bilgiler yer almaktadır. Geliştirici Merkezi'ne www.adobe.com/devnet/
adreslerinden ulaşabilirsiniz.
Adobe Tasarım Merkezi
Dijital tasarım ve hareketli grafik ile ilgili en son bilgileri alın. Önemli sanatçıların adıyla göz atın, yeni tasarım
eğilimlerini keşfedin ve dersler, önemli iş akışları ve gelişmiş tekniklerle becerilerinizi geliştirin. Yeni dersler ve
makaleler ile ilham verici galeri öğeleri için iki haftada bir kontrol edin. Tasarım Merkezi'ne
www.adobe.com/designcenter/ adresinden ulaşabilirsiniz.
Flash Lite 1.x ile Çalışmaya Başlama Flash Lite 1.x uygulamasına giriş sunar ve Adobe® Device Central CS4 emülatörü
kullanarak içeriğinizi nasıl test edeceğinizi açıklar
Flash Lite 1.x Uygulamaları Geliştirme Flash Lite 1.x kullanılarak mobil cihazlar için nasıl uygulama geliştirileceğini
anlatır.
Flash Lite 1.x ActionScript Öğrenmek FlashLite1.xiçerisindenasılActionScriptkullanılacağınıveFlashLite1.xiçerisinde
bulunan ActionScript özelliklerini anlatır
Flash Lite 1.x ActionScript Dil Başvurusu FlashLite1.xiçerisindebulunanActionScriptöğelerininsözdiziminivekullanımını
sunar
Kitap Açıklama
13. 4
Bölüm 2: ActionScript 3.0'a giriş
Bu bölümde, en yeni ve en yenilikçi ActionScript sürümü olan Adobe® ActionScript® 3.0'a genel bakış sağlanmaktadır.
ActionScript hakkında
ActionScript, Adobe® Flash® Player ve Adobe® AIR™ çalışma zamanı ortamları için programlama dilidir. Flash, Flex ve
AIR içerik ve uygulamalarında etkileşim, veri işleme ve daha fazlasına olanak sağlar.
ActionScript, Flash Player ve AIR uygulamasının bir parçası olan ActionScript Virtual Machine (AVM) tarafından
çalıştırılır. ActionScript kodu, Adobe® Flash® CS4 Professional veya Adobe® Flex™ Builder™ uygulamasında yerleşik
olanlar ya da Adobe® Flex™ SDK uygulamasında kullanılabilir olanlar gibi, genellikle bir derleyici tarafından bayt kodu
formatında (bilgisayarlar tarafından yazılan ve anlaşılan bir çeşit programlama dili) derlenir. Bayt kodu, Flash Player
ve AIR uygulamaları tarafından çalıştırılan SWF dosyalarında gömülüdür.
ActionScript 3.0, nesne tabanlı programlama konusunda temel bilgisi olan geliştiricilere bilindik gelecek güçlü bir
programlama modeli sunar. ActionScript 3.0'ın önceki ActionScript sürümlerinden daha gelişmiş olan bazı önemli
özellikleri arasında şunlar yer alır:
• AVM2 adı verilen ve yeni bir bayt kodu talimat kümesi kullanıp önemli ölçüde performans artışı sağlayan yeni bir
ActionScript Virtual Machine.
• Önceki derleyici sürümlerinden daha derin eniyileştirmeler gerçekleştiren daha modern bir derleyici kodu
• Düşük düzeyde nesne denetimi ve gerçek bir nesne odaklı model içeren, genişletilmiş ve geliştirilmiş bir uygulama
programlama arabirimi (API)
• XML için ECMAScript (E4X) belirtimini (ECMA-357 sürüm 2) esas alan XML API'si. E4X, dilin yerel veri türü
olarak ECMAScript'e XML ekleyen bir dil uzantısıdır.
• Belge Nesnesi Modeli (DOM) Düzey 3 Olaylar Belirtimi'ni esas alan bir olay modeli
ActionScript 3.0'ın avantajları
ActionScript 3.0, önceki ActionScript sürümlerinin komut dosyası oluşturma yeteneklerinden çok daha fazlasını
sunar. Büyük veri kümeleri ve nesne tabanlı, yeniden kullanılabilir kod tabanları ile oldukça karmaşık uygulamaların
oluşturulmasını kolaylaştırmak üzere tasarlanmıştır. ActionScript 3.0, Adobe Flash Player uygulamasında çalışan
içerik için gerekmese de, yalnızca yeni sanal makine olan AVM2 ile kullanılabilen performans artışına bir kapı açar.
ActionScript 3.0 kodu, eski ActionScript kodundan on kata kadar daha hızlı çalışabilir.
Eski ActionScript Virtual Machine sürümü olan AVM1, ActionScript 1.0 ve ActionScript 2.0 kodunu çalıştırır.
Varolan ve eski içerikle geriye doğru uyumluluk sağlamak için Flash Player 9 ve 10 tarafından AVM1 desteklenir. Daha
fazla bilgi için, bkz. “Önceki sürümlerle uyumluluk” sayfa 7.
14. 5FLASH IÇIN ACTIONSCRIPT 3.0 PROGRAMLAMA
ActionScript 3.0'a giriş
ActionScript 3.0'daki yenilikler
ActionScript 3.0, ActionScript programcılara tanıdık gelen birçok sınıf ve özellik içerse de, ActionScript 3.0 mimari ve
kavramsal açıdan önceki ActionScript sürümlerinden farklıdır. ActionScript 3.0'daki geliştirmeler arasında, çekirdek
dilin yeni özellikleri ve düşük düzeyli nesneler üzerinde daha yüksek denetim sağlayan gelişmiş Flash Player API'si yer
alır.
Not: Adobe® AIR™ uygulamaları, Flash Player API'lerini de kullanabilir.
Çekirdek dil özellikleri
Çekirdek dil, programlama dilinin deyimler, ifadeler, koşullar, döngüler ve türler gibi temel bina bloklarını tanımlar.
ActionScript 3.0, geliştirme işlemini hızlandıran birçok yeni özellik içerir.
Çalışma zamanı istisnaları
ActionScript 3.0, önceki ActionScript sürümlerinden daha çok hata koşulu bildirir. Yaygın hata koşulları için çalışma
zamanı istisnaları kullanılarak hata ayıklama deneyimini geliştirir ve hataları daha güçlü şekilde işleyen uygulamalar
geliştirmenizi sağlar. Çalışma zamanı hataları, kaynak dosya ve satır numarası bilgilerini ek açıklama olarak veren
yığın izleri sağlayarak hızlı şekilde hataların yerini belirlemenize yardımcı olur.
Çalışma zamanı türleri
ActionScript 2.0'da tür ek açıklamaları birincil olarak geliştiriciye yardım sağlama amaçlıydı; çalışma zamanında tüm
değerler dinamik olarak türlenmiştir. ActionScript 3.0'da, tür açıklamaları çalışma zamanında korunur ve birçok amaç
için kullanılır. Flash Player ve Adobe AIR, çalışma zamanı, çalışma zamanı tür denetlemesi uygulayarak sistemin tür
güvenliğini artırır. Tür bilgileri aynı zamanda yerel makine temsillerinde değişkenleri temsil etmek için de kullanılarak
performansı artırır ve bellek kullanımını azaltır.
Mühürlenmiş sınıflar
ActionScript 3.0, mühürlenmiş sınıf kavramını getirmiştir. Mühürlenmiş bir sınıf, derleme zamanında tanımlanmış
yalnızca sabit özellikler ve yöntemler kümesine sahiptir; bu sınıfa ek özellikler ve yöntemler eklenemez. Bu da daha
katı derleme zamanı denetlemesi sağlayarak daha güçlü programlar oluşmasına neden olur. Buna ek olarak, nesne
örneklerinin her biri için dahili bir karma tablo gerektirmeyerek bellek kullanımını da azaltır. dynamic anahtar
sözcüğünün kullanılmasıyla dinamik sınıflar da mümkündür. ActionScript 3.0'daki tüm sınıflar varsayılan olarak
mühürlenmiştir ancak dynamic anahtar sözcüğüyle bu sınıfların dinamik olduğu bildirilebilir.
Yöntem kapanışı
ActionScript 3.0, yöntem kapanışının otomatik olarak orijinal nesne örneğini hatırlamasına olanak sağlar. Bu özellik,
olay işlemesi için kullanışlıdır. ActionScript 2.0'da, yöntem kapanışları hangi nesne örneğinden ayıklandıklarını
hatırlamaz ve bu da yöntem kapanışı çağrıldığında beklenmeyen davranış oluşmasına neden olur. mx.utils.Delegate
sınıfı sık kullanılan bir geçici çözümdür ancak artık buna ihtiyaç kalmamıştır.
XML için ECMAScript (E4X)
ActionScript 3.0, en son ECMA-357 olarak standartlaştırılmış olan XML için ECMAScript (E4X) uygular. E4X,
XML'in işlenmesi için doğal ve akıcı bir dil yapıları kümesi sunar. Geleneksel XML ayrıştırma API'lerinin tersine, E4X
ile XML, dilin yerel bir veri türüymüş gibi hareket eder. E4X, ihtiyaç duyulan kod miktarını büyük ölçüde azaltarak
XML'i işleyen uygulamaların geliştirilmesini kolaylaştırır. E4X'in ActionScript 3.0 uygulaması hakkında daha fazla
bilgi almak için, bkz. “XML ile çalışma” sayfa 222.
ECMA’nın E4X belirtimini görüntülemek için www.ecma-international.org adresine gidin.
15. 6FLASH IÇIN ACTIONSCRIPT 3.0 PROGRAMLAMA
ActionScript 3.0'a giriş
Normal ifadeler
ActionScript 3.0, hızlı şekilde dizeleri arayabilmeniz ve işleyebilmeniz amacıyla normal ifadeler için yerel destek içerir.
ECMAScript (ECMA-262) sürüm 3 dil belirtiminde belirtildiği şekilde ActionScript 3.0, normal ifadeler için destek
uygular.
Ad alanları
Ad alanları, bildirimlerin görünürlüğünü (public, private, protected) kontrol etmek için kullanılan geleneksel
erişim belirticilerine benzer. Bunlar, seçtiğiniz adlara sahip olabilen özel erişim belirticileri olarak çalışır. Çakışmaları
önlemek için, ad alanlarında bir Universal Resource Identifier (URI) bulunur ve E4X ile çalıştığınızda XML ad
alanlarını temsil etmek için de ad alanları kullanılır.
Yeni ilkel türler
ActionScript 2.0, Number adında, çift kesinlikli ve kayan nokta sayısı olan tek bir sayısal türe sahiptir. ActionScript
3.0, int ve uint türlerini içerir. int türü, ActionScript'in CPU için hızlı tam sayı matematik yeteneklerinden
faydalanmasına olanak sağlayan 32-bit işaretli bir tam sayıdır. int türü, döngü sayaçları ve tam sayıların kullanıldığı
değişkenler için kullanışlıdır. uint türü, RGB renk değerleri, bayt sayıları ve daha fazlası için kullanışlı olan işaretsiz,
32-bit tam sayı türüdür.
Flash Player API'sinin özellikleri
ActionScript 3.0'daki Flash Player API'leri, düşük bir düzeydeki nesneleri kontrol etmenize olanak sağlayan birçok
sınıf içerir. Dil mimarisi, önceki sürümlere göre daha sezgisel olacak şekilde tasarlanmıştır. Burada ayrıntılı şekilde ele
alınacak çok fazla sayıda yeni sınıf olsa da, ilerleyen bölümlerde bazı önemli değişikliklere yer verilmiştir.
Not: Adobe® AIR™ uygulamaları, Flash Player API'lerini de kullanabilir.
DOM3 olay modeli
Belge Nesnesi Modeli Düzey 3 olay modeli (DOM3), uygulama içindeki nesnelerin etkileşim ve iletişim kurarak
durumlarını koruyabilmesi ve değişikliğe yanıt vermesi için olay mesajları oluşturma ve işlemeye yönelik standart bir
yöntem sağlar. World Wide Web Consortium DOM Düzey 3 Olaylar Belirtimi'nden sonra düzenlenen bu model,
önceki ActionScript sürümlerinde kullanılabilir olan olay sistemlerinden daha net ve daha etkili bir mekanizma sağlar.
Olaylar ve hata olayları, flash.events paketinde bulunur. Flash bileşenleri çerçevesi, Flash Player API'siyle aynı olay
modelini kullanır, bu nedenle olay sistemi tüm Flash platformunda birleştirilmiştir.
Görüntüleme listesi API'si
Flash Player ve Adobe AIR görüntüleme listesine (uygulamadaki görsel öğeleri içeren ağaç) erişme API'si, görsel ilkel
öğelerle çalışmaya yönelik sınıfları içerir.
Yeni Sprite sınıfı, hafif bir bina bloğu olup MovieClip sınıfına benzer ancak UI bileşenleri için temel sınıf olarak daha
uygundur. Yeni Shape sınıfı ham vektör şekillerini temsil eder. Bu sınıflar new operatörüyle doğal olarak başlatılabilir
ve herhangi bir zamanda dinamik olarak yeniden üst öğeye sahip olabilir.
Derinlik yönetimi şimdi otomatiktir ve Flash Player ve Adobe AIR uygulamalarında yerleşik olarak bulunur, böylece
derinlik sayılarının atamasının oluşturulması gereksizdir. Nesnelerin z sırasının belirtilmesi ve yönetilmesi için yeni
yöntemler sağlanır.
16. 7FLASH IÇIN ACTIONSCRIPT 3.0 PROGRAMLAMA
ActionScript 3.0'a giriş
Dinamik verileri ve içerikleri işleme
ActionScript 3.0, uygulamanızda varlıkların ve verilerin yüklenmesi için tüm API'de sezgisel ve tutarlı olan
mekanizmalar içerir. Yeni Loader sınıfı, SWF dosyalarının ve görüntü varlıklarının yüklenmesi için tek bir mekanizma
ve yüklenen içerikle ilgili ayrıntılı bilgilere erişme yolu sağlar. URLLoader sınıfı, veri tabanlı uygulamalarda metin ve
ikili verilerin yüklenmesi için ayrı bir mekanizma sağlar. Socket sınıfı, sunucu soketlerine herhangi bir formatta ikili
verileri okuyup yazmak için bir araç sağlar.
Düşük düzeyli veri erişimi
Çeşitli API'ler, önceden ActionScript'te asla kullanılabilir olmayan verilere düşük düzeyli erişim sağlar. URLLoader
tarafından uygulanan URLStream sınıfı, indirilen veriler için, indirme sırasında verilere ham ikili veriler olarak
erişilmesini sağlar. ByteArray sınıfı, ikili verilerle okumayı, yazmayı ve çalışmayı eniyileştirmenize olanak sağlar. Yeni
Sound API'si, SoundChannel ve SoundMixer sınıfları üzerinden ayrıntılı ses denetimi sağlar. Güvenlikle ilgilenen yeni
API'ler, SWF dosyasının veya yüklenen içeriğin güvenlik ayrıcalıkları hakkında bilgi sağlayarak güvenlik hatalarını
daha iyi işlemenize olanak tanır.
Metinle çalışma
ActionScript 3.0, tüm metinle ilgili API'ler için bir flash.text paketi içerir. TextLineMetrics sınıfı, bir metin alanındaki
metin satırı için ayrıntılı ölçütler sağlar; ActionScript 2.0'daki TextFormat.getTextExtent() öğesinin yerini alır.
TextField sınıfı, bir metin satırı veya bir metin satırındaki tek bir karakter hakkında belirli bilgiler sağlayabilen ilginç
özellikte birçok yeni düşük düzeyli yöntemler içerir. Bu yöntemler arasında, bir karakterin sınırlama kutusunu temsil
eden dikdörtgeni döndüren getCharBoundaries(), belirtilen bir noktadaki karakterin dizinini döndüren
getCharIndexAtPoint() ve bir paragraftaki birinci karakterin dizinini döndüren getFirstCharInParagraph()
yer alır. Satır düzeyindeki yöntemler arasında, belirtilen bir metin satırındaki karakterlerin sayısını döndüren
getLineLength() ve belirtilen satırın metnini döndüren getLineText() yer alır. Yeni bir Font sınıfı, SWF
dosyalarındaki gömülü fontların yönetilmesi için araçlar sağlar.
Önceki sürümlerle uyumluluk
Flash Player her zamanki gibi, önceden yayınlanmış içerikle geriye doğru tam uyumluluk sağlar. Önceki Flash Player
sürümlerinde çalışan tüm içerikler Flash Player 9 ve sonrasında da çalışır. Ancak Flash Player 9'da ActionScript 3.0'ın
bulunması, eski içerik ile Flash Player 9'da çalışan yeni içerik arasında birlikte çalışılabilirlik konusunda zorluklara yol
açabilir. Uyumluluk sorunları arasında şunlar yer alır:
• Tek bir SWF dosyası, ActionScript 1.0 veya 2.0 kodunu ActionScript 3.0 koduyla birleştiremez.
• ActionScript 3.0 kodu, ActionScript 1.0 veya 2.0'da yazılmış bir SWF dosyasını yükleyebilir ancak SWF dosyasının
değişkenlerine ve işlevlerine erişemez.
• ActionScript 1.0 veya 2.0'da yazılmış SWF dosyaları, ActionScript 3.0'da yazılmış SWF dosyalarını yükleyemez. Bu
da, Flash 8 veya Flex Builder 1.5 ya da önceki sürümlerde yazılmış SWF dosyalarının ActionScript 3.0 SWF
dosyalarını yükleyemediği anlamına gelir.
Bu kuralın tek istisnası, ActionScript 2.0 SWF dosyası, düzeylerinden birine önceden herhangi bir şey yüklemediği
sürece, ActionScript 2.0 SWF dosyasının bir ActionScript 3.0 SWF dosyasıyla kendisini değiştirebilmesidir.
ActionScript 2.0 SWF dosyası, loadMovieNum() öğesine bir çağrı yapıp level parametresine 0 değerini ileterek
bunu yapabilir.
17. 8FLASH IÇIN ACTIONSCRIPT 3.0 PROGRAMLAMA
ActionScript 3.0'a giriş
• Genelde, ActionScript 3.0'da yazılmış SWF dosyalarıyla birlikte çalışacaksa, ActionScript 1.0 veya 2.0'da yazılmış
SWF dosyalarının alınması gerekir. Örneğin, ActionScript 2.0'ı kullanarak bir ortam oynatıcısı oluşturduğunuzu
varsayın. Ortam oynatıcısı, ayrıca ActionScript 2.0'da oluşturulmuş çeşitli içerikleri de yükler. ActionScript 3.0'da
yeni içerik oluşturup bu içeriği ortam oynatıcısına yükleyemezsiniz. Video oynatıcısını ActionScript 3.0'a almanız
gerekir.
Ancak ActionScript 3.0'da bir ortam oynatıcısı oluşturursanız, bu ortam oynatıcısı ActionScript 2.0 içeriğinizin
basit yüklemelerini gerçekleştirebilir.
Aşağıdaki tablolarda, önceki Flash Player sürümlerinin yeni içerik yüklenmesi ve kod çalıştırılmasıyla ilgili
sınırlamaları ve farklı ActionScript sürümlerinde yazılmış SWF dosyaları arasında çapraz komut dosyası oluşturma
sınırlamaları özetlenmektedir.
Aşağıdaki tabloda yer alan “Desteklenen işlevler”, Flash Player 9 veya sonrasında çalıştırılan içerikleri ifade eder. Flash
Player 8 veya öncesinde çalışan içerikler yalnızca ActionScript 1.0 ve 2.0'da yüklenebilir, görüntülenebilir,
çalıştırılabilir ve bu içeriklerin çapraz komut dosyası oluşturulabilir.
Desteklenen işlevler Flash Player 7 Flash Player 8 Flash Player 9 ve 10
Şunlar için yayınlanmış SWF dosyalarını
yükleyebilir
7 ve öncesi 8 ve öncesi 9 (veya 10) ve öncesi
Bu AVM'yi içerir AVM1 AVM1 AVM1 ve AVM2
Şu ActionScript sürümlerinde yazılmış
SWF'leri çalıştırır
1.0 ve 2.0 1.0 ve 2.0 1.0 ve 2.0 ve 3.0
Desteklenen işlevler ActionScript 1.0 ve 2.0'da oluşturulan
içerik
ActionScript 3.0'da oluşturulan içerik
Şu sürümlerde oluşturulan içerik yüklenebilir
ve içerikteki kod çalıştırılabilir
yalnızca ActionScript 1.0 ve 2.0 ActionScript 1.0, 2.0 ve ActionScript 3.0
Şu sürümlerde oluşturulan içeriğin çapraz
komut dosyası oluşturulabilir
yalnızcaActionScript1.0ve2.0(YerelBağlantı
üzerinden ActionScript 3.0)
Yerel Bağlantı üzerinden ActionScript 1.0 ve
2.0
ActionScript 3.0
18. 9
Bölüm 3: ActionScript ile çalışmaya
başlama
Bu bölüm, ActionScript programlamaya başlamanız için tasarlanmış olup bu kılavuzun geri kalanında karşılaşacağınız
kavramları ve örnekleri anlamak için ihtiyaç duyacağınız arka planı size sağlar. ActionScript'te uygulanma şekli
kapsamında açıklanan temel programlama kavramlarıyla başlayacağız. Ayrıca ActionScript uygulamasının organize
edilmesi ve oluşturulması temellerini de ele alacağız.
Programlama temelleri
ActionScript bir programlama dili olduğundan, ilk önce birkaç genel bilgisayar programlama kavramını anlarsanız,
ActionScript'i öğrenmeniz kolaylaşacaktır.
Bilgisayar programları ne yapar
Öncelikle, bilgisayar programının ne olduğuna ve ne yaptığına dair kavramsal bir fikir edinilmesi yardımcı olacaktır.
Bilgisayar programının iki yönü vardır:
• Program, bilgisayarın gerçekleştirmesi için tasarlanmış talimatlar veya adımlar serisidir.
• Her adım bazı bilgi veya verilerin işlenmesini içerir.
Genel anlamda bilgisayar programı, bilgisayara verdiğiniz ve bilgisayar tarafından birer birer gerçekleştirilen adım
adım talimatlar listesidir. Talimatların her birine deyim denir. Bu kılavuzda da göreceğiniz gibi, ActionScript'te her
deyim, sonunda bir noktalı virgül olacak şekilde yazılır.
Temelde, bir programdaki talimatın yaptığı tüm şey, bilgisayarın belleğinde saklanan bazı veri bitlerini işlemekten
ibarettir. Basit bir örnek vermek gerekirse, bilgisayara iki sayı eklemesini ve sonucu belleğinde saklamasını talimat
olarak verebilirsiniz. Daha karmaşık bir örnek vermek gerekirse, ekranda çizili bir dikdörtgen olduğunu ve bu
dikdörtgeni başka bir yere taşımak için bir program yazmak istediğinizi varsayalım. Bilgisayar, dikdörtgenle ilgili
belirli bilgileri izler, örn. dikdörtgenin konumlandırıldığı x, y koordinatları, genişliği, uzunluğu, rengi, vb. Bu bilgi
bitlerinin her biri bilgisayarın belleğinde bir yerde saklanır. Dikdörtgeni farklı bir konuma taşıma programı, "x
koordinatını 200 olarak değiştir; y koordinatını 15 olarak değiştir" (başka bir deyişle, x ve y koordinatları için
kullanılacak yeni değerleri belirten) gibi adımlar içerecektir. Elbette bilgisayar bu sayıları gerçekten bilgisayar
ekranında görüntülenen görüntüye dönüştürmek için bu verilerle bir şeyler yapar; ancak şu an için bizi ilgilendiren
ayrıntı düzeyine göre, "ekrandaki dikdörtgeni taşıma" işleminin gerçekten bilgisayar belleğindeki veri bitlerinin
değiştirilmesiyle gerçekleştiğinin bilinmesi yeterlidir.
Değişkenler ve sabitler
Programlama temel olarak bilgisayar belleğindeki bilgilerin değiştirilmesini içerdiğinden, programda tek bir bilgiyi
temsil etmenin bir yolunun olması gerekir. Değişken, bilgisayar belleğindeki bir değeri temsil eden addır. Değerleri
işlemek için deyimler yazdığınızda, değerin yerine değişkenin adını yazarsınız; bilgisayar değişken adını
programınızda her gördüğünde, belleğine bakar ve orada bulduğu değeri kullanır. Örneğin, her biri bir sayı içeren,
value1 ve value2 adında iki değişkeniniz varsa, bu iki sayıyı eklemek için şu deyimi yazabilirsiniz:
value1 + value2
19. 10FLASH IÇIN ACTIONSCRIPT 3.0 PROGRAMLAMA
ActionScript ile çalışmaya başlama
Bilgisayar gerçekten adımları uygularken, her değişkendeki değerlere bakar ve bunları birbirine ekler.
ActionScript 3.0'da, bir değişken üç farklı bölümden oluşur:
• Değişkenin adı
• Değişkende saklanabilen veri türü
• Bilgisayarın belleğinde saklanan gerçek değer
Bilgisayarın, değerin yer tutucusu olarak adı nasıl kullandığını açıkladık. Veri türü de önemlidir. ActionScript'te bir
değişken oluşturduğunuzda, bu değişkenin barındıracağı belirli veri türünü belirtirsiniz; bu noktadan sonra,
programınızın talimatları değişkende yalnızca o veri türünü saklayabilir ve siz de o veri türüyle ilişkilendirilmiş belirli
özellikleri kullanarak değeri işleyebilirsiniz. ActionScript'te, bir değişken oluşturmak için (değişkeni bildirmek de
denilebilir), var deyimini kullanırsınız:
var value1:Number;
Bu durumda, bilgisayara yalnızca Number verilerini ("Number", ActionScript'te tanımlı belirli bir veri türüdür)
barındıracak value1 adında bir değişken oluşturması talimatını verdik. Değişkende hemen bir değeri de
saklayabilirsiniz:
var value2:Number = 17;
Adobe Flash CS4 Professional'da bir değişken bildirmenin başka bir yolu vardır. Sahne Alanı'na bir film klibi sembolü,
düğme sembolü veya metin alanı yerleştirdiğinizde, Özellik denetçisinde buna bir örnek adı verebilirsiniz. Flash
uygulaması, sahne alanının arkasında örnek adıyla aynı ada sahip bir değişken oluşturur ve bu Sahne Alanı öğesini
ifade etmek için ActionScript kodunuzda bu değişkeni kullanabilirsiniz. Böylece, örneğin Sahne Alanı'nda bir film
klibi sembolünüz olursa ve buna rocketShip örnek adını verirseniz, ActionScript kodunuzda rocketShip
değişkenini her kullandığınızda, aslında bu film klibini işliyor olursunuz.
Sabit, bilgisayarın belleğinde belirli bir veri türüyle bir değeri temsil eden bir ad olması açısından değişkene çok benzer.
Tek farkı, sabite bir ActionScript uygulaması sırasında yalnızca bir kere değer atanabilmesidir. Sabitin değeri
atandıktan sonra tüm uygulamada bu değer aynı kalır. Sabit bildirme sözdizimi, değişken bildirme sözdizimiyle
aynıdır, tek farkı, var anahtar sözcüğü yerine const anahtar sözcüğünün kullanılmasıdır:
const SALES_TAX_RATE:Number = 0.07;
Bir proje boyunca birden çok yerde kullanılan ve normal koşullarda değişmeyecek bir değeri tanımlamak için sabit
kullanışlıdır. Değişmez değer yerine bir sabit kullanılması, kodunuzu daha okunaklı hale getirir. Örneğin, bir fiyatı
SALES_TAX_RATE değeriyle çarpan bir kod satırının anlaşılması, fiyatı 0.07 değeriyle çarpan bir kod satırına göre daha
kolaydır. Ayrıca, bir sabit tarafından tanımlanan değerin değişmesi gerekmiyorsa, projeniz boyunca o değeri temsil
etmek için bir sabit kullanırsanız, sabit kodlu değişmez değerleri kullandığınızda yaptığınız gibi çeşitli yerlerde değeri
değiştirmek yerine yalnızca bir yerde (sabit bildiriminde) değeri değiştirmeniz gerekir.
Veri türleri
ActionScript'te, oluşturduğunuz değişkenlerin veri türü olarak kullanabileceğiniz birçok veri türü vardır. Bunlardan
bazıları "basit" veya "temel" veri türleri olarak değerlendirilebilir:
• Dize: bir ad veya kitabın bir bölümü gibi, metin değeri
• Sayısal: ActionScript 3.0, sayısal veriler için üç özel veri türü içerir:
• Sayı: kesirli veya kesirsiz sayılar da dahil olmak üzere herhangi bir sayısal değer
• int: bir tam sayı (kesirsiz bir tam sayı)
• uint: “işaretsiz” tam sayı, başka bir deyişle negatif olamayan bütün bir sayı
20. 11FLASH IÇIN ACTIONSCRIPT 3.0 PROGRAMLAMA
ActionScript ile çalışmaya başlama
• Boolean: bir düğmenin etkin olup olmadığı veya iki değerin eşit olup olmadığı gibi, doğru veya yanlış değeri
Basit veri türleri tek bir bilgiyi temsil eder: örneğin, tek bir sayı veya tek bir metin sırası Ancak, ActionScript'te tanımlı
veri türlerinin çoğunluğu, birlikte gruplandırılabilen değerler kümesini temsil ettiğinden, karmaşık veriler olarak
açıklanabilir. Örneğin, Date veri türüne sahip bir değişken, tek bir değeri (tek bir zamanı) temsil eder. Ancak, bu değer
gerçekte birçok değer olarak temsil edilir: gün, ay, yıl, saat, dakika, saniye, vb. ve bunların her biri ayrı ayrı bir sayıdır.
Böylece, biz tarihi tek bir değer olarak düşünürken (ve Date değişkenini oluşturarak tek bir değer olarak
değerlendirebilirken), bilgisayar dahili olarak bunu birçok değerden oluşan bir grup olarak değerlendirir, bir araya
getirir ve tek bir tarihi tanımlar.
Programcıların tanımladığı veri türlerinin yanı sıra, yerleşik veri türlerinin çoğu da karmaşık veri türleridir.
Tanıyabileceğiniz karmaşık veri türlerinden bazıları şunlardır:
• MovieClip: bir film klibi sembolü
• TextField: dinamik bir alan veya girdi metni alanı
• SimpleButton: bir düğme sembolü
• Date: tek bir zaman (tarih ve saat) hakkındaki bilgi
Sınıf ve nesne sözcükleri genellikle veri türü için eşanlamlı olarak kullanılır. Sınıf, veri türünün tanımıdır, veri türünün
tüm nesneleri için bir şablon gibidir, örn. "Example veri türünün tüm değişkenleri bu özelliklere sahiptir: A, B ve C."
söylemine benzer. Nesne ise sınıfın gerçek bir örneğidir; veri türü MovieClip olan bir değişken, MovieClip nesnesi
olarak açıklanabilir. Aşağıda, aynı şeyi söylemenin birkaç farklı yolu verilmiştir:
• myVariable değişkeninin veri türü Number'dır.
• myVariable değişkeni bir Number örneğidir.
• myVariable değişkeni bir Number nesnesidir.
• myVariable değişkeni, Number sınıfının bir örneğidir.
Nesnelerle çalışma
ActionScript, nesne odaklı programlama dili olarak bilinir. Nesne odaklı programlama, bir programlama yaklaşımı
olup nesneleri kullanarak bir programda kodu organize etme yolundan fazlasını ifade etmez.
Daha önce bilgisayar programını, bilgisayarın gerçekleştirdiği bir adımlar ve talimatlar serisi olarak tanımladık. Bu
durumda kavramsal olarak bilgisayarı tek bir uzun talimatlar listesi olarak düşünebiliriz. Ancak, nesne odaklı
programlamada, program talimatları farklı nesneler arasında bölünür—kod, işlev kümeleri olarak gruplandırılır,
böylece ilgili işlev türleri veya ilgili bilgiler tek bir konteynerde bir arada gruplandırılır.
Aslında, Flash uygulamasında sembollerle çalıştıysanız, nesnelerle de çalışmaya hazırsınız demektir. Bir film klibi
sembolü—örneğin bir dikdörtgen çizimi—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. Örneğin, seçili olduğunda, Özellik denetçisinde
değiştirebileceğiniz değerler vardır, örn. x koordinatı, genişlik veya alfa (saydamlık) değiştirme ya da gölge filtresi
ekleme gibi çeşitli renk ayarlamaları. Dikdörtgeni döndürmek için Serbest Dönüştürme aracının kullanılması gibi,
diğer Flash araçları daha fazla değişiklik yapmanıza olanak sağlar. Flash geliştirme ortamında bir film klibi sembolünü
değiştirmek için kullanabildiğiniz tüm bu şeyleri aynı zamanda MovieClip nesnesi adındaki tek bir kümede bir araya
getirilmiş verileri değiştirerek ActionScript'te de yapabilirsiniz.
21. 12FLASH IÇIN ACTIONSCRIPT 3.0 PROGRAMLAMA
ActionScript ile çalışmaya başlama
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 birlikte kullanılır.
Özellikler
Özellik, bir nesnede kümelenmiş olan verilerden birini temsil eder. Bir şarkı nesnesi, artist ve title adında
özelliklere sahip olabilir; MovieClip sınıfı rotation, x, width ve alpha gibi özelliklere sahiptir. Tek tek değişkenler
gibi özelliklerle çalışabilirsiniz—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;
Ortak yapıya dikkat edin: nesnenin adı sırayla nesnenin adını (square, triangle), bir nokta işaretini (.) ve özelliğin
adını (x, rotation, scaleX) içerir. 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 nesne tarafından gerçekleştirilebilen bir eylemdir. Örneğin, Flash uygulamasında, zaman çizelgesinde
birçok anahtar kare ve animasyonla bir film klibi sembolü oluşturduysanız, bu film klibi oynatılabilir veya
durdurulabilir ya da bu film klibine oynatma kafasını belirli bir kareye taşıması bildirilebilir.
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);
22. 13FLASH IÇIN ACTIONSCRIPT 3.0 PROGRAMLAMA
ActionScript ile çalışmaya başlama
Gördüğünüz gibi, yöntemlere de, tıpkı özellikler gibi sırayla nesnenin adı (bir değişken), nokta işareti, yöntemin adı
ve parantez işaretleri yazılarak erişilebilir. 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 gideceğini bilmesi gerekir, bu nedenle parantez için
tek bir parametre olması gereklidir. 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 (ekranda görüntülenen gerçek metin içeriğini temsil eder),
String olarak tanımlanır, bu nedenle yalnızca metin değerlerini içerebilir. Bu kod satırı, numericData değişkenindeki
sayısal değeri metne dönüştürür ve sonra bu metnin ekranda calculatorDisplay adındaki TextField nesnesinde
gösterilmesini sağlar:
calculatorDisplay.text = numericData.toString();
Olaylar
Bilgisayar programını, bilgisayarın adım adım gerçekleştirdiği bir talimatlar dizisi olarak açıklamıştık. 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 klavyedeki bir tuşa basması gibi birçok olay kullanıcı etkileşimiyle ilgilidir ancak başka tür olaylar da
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 vardır. Temelde, bir ActionScript programı çalışırken, Adobe Flash Player ve Adobe AIR durup belirli
şeylerin gerçekleşmesini bekler ve bu şeyler gerçekleştiğinde, bu olaylar için belirttiğiniz belirli bir ActionScript
kodunu çalıştırır.
Temel olay işleme
Belirli bir olaya yanıt olarak gerçekleştirilmesi gereken 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ılacak veya hangi Loader nesnesi
görüntüyü yüklüyor? Olay kaynağı, Flash Player veya AIR tarafından olayın hedeflendiği (başka bir deyişle olayın
gerçekten gerçekleştiği) nesne olduğundan, ayrıca olay hedefi olarak da bilinir.
• Olay: Gerçekleşecek şey, yanıt vermek istediğiniz şey nedir? Birçok nesne çok sayıda olayı tetiklediğinden bunun
tanımlanması önemlidir.
• Yanıt: Olay gerçekleştiğinde hangi adımların gerçekleştirilmesini istiyorsunuz?
Olayları işlemek için her ActionScript kodu yazdığınızda, kodda bu üç öğe yer alır ve kod bu temel yapıya uyar (kalın
öğeler, belirli durumunuz için dolduracağınız yer tutuculardır):
23. 14FLASH IÇIN ACTIONSCRIPT 3.0 PROGRAMLAMA
ActionScript ile çalışmaya başlama
function eventResponse(eventObject:EventType):void
{
// Actions performed in response to the event go here.
}
eventSource.addEventListener(EventType.EVENT_NAME, eventResponse);
Bu kod iki şey 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, işlevin belirtilen olaya abone olmasının sonucu olarak bu, kaynak nesnenin
addEventListener() yöntemini çağırır, böylece olay gerçekleştiğinde işlevin eylemleri gerçekleştirilir. Bu parçaların
her birini daha ayrıntılı şekilde ele alacağız.
İşlev, eylemleri gerçekleştirmek üzere kısayol adı gibi tek bir ad ile eylemleri bir arada gruplandırmanız için bir yol
sağlar. İşlev, bir yönteme benzer, tek farkı, işlevin belirli bir sınıfla ilişkilendirilmek zorunda olmamasıdır. (Aslında
yöntem, belirli bir sınıfla ilişkilendirilmiş bir işlev olarak tanımlanabilir.) Olay işleme için bir işlev oluştururken, işlevin
adını seçmeniz gerekir (bu durumda eventResponse adında). Ayrıca tek bir parametre belirmeniz gerekir (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 ayraçları arasına ({ ... }), olay gerçekleştiğinde bilgisayarın uygulamasını istediğiniz
talimatları yazarsınız.
Olay işleme işlevini yazdıktan sonra, olay kaynağı nesnesine (olayın gerçekleştiği nesne—örneğin, düğme) olay
gerçekleştiğinde işlevinizin çağrılmasını istediğinizi bildirmeniz gerekir. O nesnenin addEventListener()
yöntemini çağırarak bunu yaparsınız. (Olaylara sahip tüm nesneler aynı zamanda addEventListener() yöntemine
de sahiptir.) addEventListener() yöntemi iki parametre alır:
• İlk olarak, yanıt vermek istediğiniz belirli olayın adı. Yine her olay belirli bir sınıfa bağlıdır ve bu sınıfın her olay
için önceden tanımlı özel bir değeri olur—bu, birinci parametre için kullanmanız gereken olayın kendi benzersiz
adına benzer.
• İ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 işlemini inceleme
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);
24. 15FLASH IÇIN ACTIONSCRIPT 3.0 PROGRAMLAMA
ActionScript ile çalışmaya başlama
Flash Player'da çalışırken bu kodun gerçekten çalışma şekli şöyledir. (Bu davranış Adobe AIR için de aynıdır):
1 SWF dosyası yüklendiğinde, Flash Player, eventResponse() adında bir işlevin olduğunu not eder.
2 Daha sonra Flash Player, kodu (daha net olmak gerekirse, işlevde olmayan kod satırlarını) çalıştırır. Bu durumda
yalnızca bir kod satırı vardır: Olay kaynağı nesnesinde (myButton adında) addEventListener() yöntemini
çağırma ve parametre olarak eventResponse işlevini iletme.
a Dahili olarak myButton öğesi, olaylarının her birini dinleyen işlevlerin bir listesini içerir, böylece
addEventListener() yöntemi çağrıldığında, myButton öğesi olay dinleyicileri listesinde eventResponse()
işlevini saklar.