ActionScript 3.0'a giriş

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'nin bir parçası olan ActionScript Virtual Machine (AVM) uygulamasında çalıştırılır. ActionScript kodu genellikle bir derleyici tarafından bayt kodu biçimine dönüştürülür. ( Bayt kodu , bilgisayarlar tarafından yazılan ve anlaşılan bir programlama dili türüdür.) Derleyici örnekleri, Adobe® Flash®Professional'da ve Adobe® Flash®Builder™ uygulamalarında yerleşik olanı ve Adobe®Flex™SDK'de mevcut olanı içerir. Bayt kodu, Flash Player ve AIR'nin yürüttüğü SWF dosyalarına gömülüdür.

ActionScript 3.0, nesne tabanlı programlama konusunda temel bilgisi olan geliştiricilere tanıdık gelen sağlam 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'da çalışan içerik için gerekli değildir. Ancak, yalnızca AVM2'de (ActionScript sanal makinesi) mevcut performans geliştirmelerine giden bir yol 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. Flash Player 9 ve 10 geriye doğru uyumluluk için AVM1'i destekler.

ActionScript 3.0'daki yenilikler

ActionScript 3.0, ActionScript 1.0 ve 2.0'a benzeyen birçok sınıf ve özellik içerir. Ancak, 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ş API yer alır.

Ç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 ö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 3.0'da tür bilgisi çalışma zamanında korunur. Bu bilgi, çalışma zamanı türü denetimleri gerçekleştirmek için kullanılır ve sistemin tür güvenliliğini geliştirir. 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. Karşılaştırma yoluyla, ActionScript 2.0'da tür ek açıklamaları çoğunlukla geliştirici yardımıdır ve tüm değerler dinamik olarak çalışma zamanında yazılır.

Mühürlenmiş sınıflar

ActionScript 3.0, mühürlenmiş sınıf kavramını içerir. Mühürlenmiş bir sınıf, derleme zamanında tanımlanan yalnızca sabit özellikler ve yöntemler kümesine sahiptir; bu sınıfa ek özellikler ve yöntemler eklenemez. Bir sınıfın çalışma zamanında değiştirilememesi, daha sıkı derleme zamanı denetimine yol açar ve bu da daha sağlam programlar oluşturulmasını sağlar. 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ı bilgisini hatırlamaz ve bu da yöntem kapanışı çağrıldığında beklenmeyen bir davranış oluşmasına neden olur.

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.

ECMA E4X belirtimini görüntülemek için www.ecma-international.org adresine gidin.

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 3.0 üç adet sayısal tür içerir: Number, int ve uint. Number çift kesinlikli, kayan nokta sayısını temsil eder. 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. Tam tersine, ActionScript 2.0 yalnızca tek bir sayısal değere sahiptir: Number.

API özellikleri

ActionScript 3.0'daki API'ler, düşük bir düzeydeki nesneleri denetlemenize olanak tanıyan birçok sınıf içerir. Dil mimarisi, önceki sürümlere göre daha sezgisel olacak şekilde tasarlanmıştır. Ayrıntılı olarak incelemek için çok fazla sınıf olsa da, bazı önemli farklılıkların önemi yoktur.

DOM3 olay modeli

Document Object Model Level 3 olay modeli (DOM3), olay mesajlarını oluşturmanın ve işlemenin standart bir yolunu sağlar. Bu olay modeli uygulamalardaki nesnelerin etkileşimde ve iletişimde bulunma, durumlarını koruma ve değişikliğe cevap vermelerine izin verecek şekilde tasarlanmıştır. ActionScript 3.0 olay modeli World Wide Web Consortium DOM Level 3 Events Belirtimi'nin ardından modellenmiştir. Bu model, ActionScript'in önceki sürümlerinde mevcut olay sistemlerinden daha temiz ve daha etkili bir mekanizma sunar.

Olaylar ve hata olayları, flash.events paketinde bulunur. Flash Professional bileşenleri ve Flex çerçevesi aynı olay modelini kullanır, böylece olay sistemi Flash Platform'da birleşir.

Görüntüleme listesi API'si

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.

Sprite sınıfı, kullanıcı arabirimi bileşenleri gibi görsel öğeler için bir temel sınıf olmak için tasarlanmış hafif bir yapı taşıdır. Shape sınıfı ham vektör şekillerini temsil eder. Bu sınıflar new operatörüyle normal şeilde başlatılabilir ve herhangi bir zamanda dinamik olarak yeniden üst öğeye sahip olabilir.

Derinlik yönetimi otomatiktir. Nesnelerin yığınlanma sırasının belirtilmesi ve yönetilmesi için yöntemler sağlanır.

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. 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 biçimde ikili verileri okuyup yazmak için bir araç sağlar.

Düşük düzeyli veri erişimi

Çeşitli API'ler veriye düşük düzeyli erişim sağlar. 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 verileri okumayı, yazmayı ve bu verilerle çalışmayı en iyileştirmenize olanak tanır. Sound API'si, SoundChannel ve SoundMixer sınıfları üzerinden ayrıntılı ses denetimi sağlar. Güvenlik API'leri, SWF dosyasının veya yüklenen içeriğin güvenlik ayrıcalıkları hakkında bilgi sağlayarak güvenlik hatalarını 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 düşük düzeyli yöntemler içerir. Örneğin, getCharBoundaries()) yöntemi bir karakterin sınırlama kutusunu temsil eden bir dikdörtgen döndürür. getCharIndexAtPoint() yöntemi belirli bir noktadaki karakterin dizinini döndürür. getFirstCharInParagraph() yöntemi paragraftaki ilk karakterin dizinini döndürü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. Font sınıfı, SWF dosyalarındaki gömülü fontların yönetilmesi için araçlar sağlar.

Metin üzerindeki daha düşük düzeyli denetimler için, flash.text.engine paketindeki sınıflar Flash Text Engine'i oluşturur. Bu sınıflar metin üzerinde düşük düzeyli denetim sağlar ve metin çerçeveleri ve bileşenleri oluşturmak için tasarlanmıştır.