ActionScript 3.0 olay işleme, önceki sürümlerden nasıl farklılık gösterir
Flash Player 9 ve üstü, Adobe AIR 1.0 ve üstü
ActionScript 3.0'da olay işleme ile önceki ActionScript sürümlerinde olay işleme arasındaki en belirgin farklılık, önceki ActionScript sürümlerinde birçok farklı olay işleme sistemleri bulunurken, ActionScript 3.0'da olay işleme için yalnızca bir sistem bulunmasıdır. Bu bölüm, önceki ActionScript sürümlerinde olay işlemenin nasıl çalıştığına genel bakış ile başlar ve sonra ActionScript 3.0 için olay işlemenin nasıl değiştiğini ele alır.
Önceki ActionScript sürümlerinde olay işleme
ActionScript 3.0 öncesindeki ActionScript sürümleri, olayların işlenmesine yönelik birçok farklı yöntem sağlamıştır:
-
Doğrudan Button ve MovieClip örnekleri üzerinde yerleştirilebilen
on()
olay işleyicileri
-
Doğrudan MovieClip örnekleri üzerine yerleştirilebilen
onClipEvent()
işleyicileri
-
XML.onload
ve
Camera.onActivity
gibi geri çağrı işlevi özellikleri
-
addListener()
yöntemi kullanarak kaydettiğiniz olay dinleyicileri
-
Kısmı olarak DOM olay modelini uygulayan UIEventDispatcher sınıfı.
Bu mekanizmaların her biri, kendi avantaj ve sınırlama kümesini sunar.
on()
ve
onClipEvent()
işleyicilerinin kullanımı kolaydır ancak doğrudan düğmelerin ve film kliplerinin üzerine yerleştirilen kodun bulunması güç olduğundan, bu işleyiciler projelerin sonraki bakımını daha güç hale getirir. Geri çağrı işlevleri kolay uygulanabilir ancak sizi herhangi bir belirli olay için yalnızca bir geri çağrı işleviyle sınırlandırır. Olay dinleyicileri daha zor uygulanabilir, yalnızca bir dinleyici nesnesi ve işlevinin oluşturulmasını değil aynı zamanda olayı oluşturan nesneyle dinleyicinin kaydını da gerektirir. Ancak bu yüksek yük, birçok dinleyici nesnesi oluşturmanıza ve bunların tümünü aynı olay için kaydetmenize olanak sağlar.
ActionScript 2.0 bileşenlerinin geliştirilmesi de başka bir olay modeli oluşturmuştur. UIEventDispatcher sınıfına dahil edilen bu yeni model, DOM Olayları Belirtimi'nin bir alt kümesini esas almıştır. Bileşen olayı işleme konusunda bilgi sahibi olan geliştiriciler, yeni ActionScript 3.0 olay modeline geçiş sürecinde daha az zorluk yaşayacaktır.
Ne yazık ki, çeşitli olay modelleri tarafından kullanılan sözdizimi çeşitli şekillerde örtüşür ve çeşitli şekillerde farklılık gösterir. Örneğin, ActionScript 2.0'da
TextField.onChanged
gibi bazı özellikler, bir geri çağrı işlevi veya olay dinleyicisi olarak kullanılabilir. Ancak, dinleyici nesnelerini kaydetmeye yönelik sözdizimi, altı sınıf arasından, dinleyicileri mi yoksa UIEventDispatcher sınıfını mı destekleyeni kullandığınıza bağlı olarak farklılık gösterir. Key, Mouse, MovieClipLoader, Selection, Stage ve TextField sınıfları için,
addListener()
yöntemini kullanırsınız ancak bileşen olay işlemesi için
addEventListener()
adında bir yöntem kullanırsınız.
Farklı olay işleme modellerinin sunduğu başka bir karmaşıklık da, kullanılan mekanizmaya bağlı olarak geniş ölçüde değişiklik gösteren olay işleyici işlevinin kapsamıydı. başka bir deyişle,
this
anahtar sözcüğünün anlamı olay işleme sistemleri arasında tutarlı değildi.
ActionScript 3.0'da olay işleme
ActionScript 3.0, önceki dil sürümlerinde varolan birçok farklı olay işleme mekanizmalarının yerini alan tek bir olay işleme modelini sunar. Yeni olay modeli, Belge Nesnesi Modeli (DOM) Düzey 3 Olaylar Belirtimi'ni esas alır. SWF dosya biçimi özellikle Belge Nesnesi Modeli standardına bağlı olmasa da, DOM olay modelinin uygulanmasının mümkün olması için görüntüleme listesi ile DOM yapısı arasında yeterince benzerlik vardır. Görüntüleme listesindeki bir nesne, DOM hiyerarşik yapısındaki bir düğüme benzetilebilir ve
görüntüleme listesi nesnesi
ile
düğüm
terimleri de bu açıklama içinde birbirinin yerine kullanılabilir.
DOM olay modelinin Flash Player ve AIR uygulaması, varsayılan davranışlar adında bir kavram içerir.
Varsayılan davranış
, Flash Player veya AIR uygulamasının, belirli olayların normal sonucu olarak çalıştırdığı bir eylemdir.
Varsayılan davranışlar
Geliştiriciler genellikle olaylara yanıt veren kodlar yazmaktan sorumludur. Ancak bazı durumlarda bir davranış bir olayla o kadar yaygın şekilde ilişkilendirilmiştir ki, geliştirici davranışı iptal etmek için kod eklemediği sürece Flash Player veya AIR uygulaması davranışı otomatik olarak çalıştırır. Flash Player veya AIR otomatik olarak davranış sergilediğinden, bu davranışlar varsayılan davranışlar olarak bilinir.
Örneğin, kullanıcı bir TextField nesnesine metin girdiğinde, metnin TextField nesnesinde görüntülenmesi o kadar yaygındır ki, Flash Player ve AIR uygulamasında bu davranış yerleşik olarak bulunur. Bu varsayılan davranışın gerçekleşmesini istemiyorsanız, yeni olay işleme sistemini kullanarak bu davranışı iptal edebilirsiniz. Kullanıcı bir TextField nesnesine metin girdiğinde, Flash Player veya AIR, kullanıcı girdisini temsil etmek için TextEvent sınıfının bir örneğini oluşturur. Flash Player veya AIR uygulamasının, TextField nesnesinde metni görüntülemesini önlemek için, bu belirli TextEvent örneğine erişmeniz ve örneğin
preventDefault()
yöntemini çağırmanız gerekir.
Tüm varsayılan davranışlar engellenemez. Örneğin, kullanıcı TextField nesnesinde bir sözcüğü çift tıklattığında, Flash Player ve AIR bir MouseEvent nesnesi oluşturur. Bu önlenemeyen varsayılan davranış, imlecin altındaki sözcüğün vurgulanmasıdır.
Olay nesnelerinin birçok türü, ilişkilendirilmiş varsayılan davranışlara sahip değildir. Örneğin, bir ağ bağlantısı kurulduğunda Flash Player bir bağlanma olay nesnesi gönderir ancak bununla ilişkilendirilmiş bir varsayılan davranış yoktur. Event sınıfı ve alt sınıflarının API belgeleri her olay türünü listeler ve engellenebilir olsun veya olmasın tüm ilişkilendirilmiş davranışları açıklar.
Varsayılan davranışların yalnızca Flash Player veya AIR tarafından gönderilen olay nesneleriyle ilişkilendirildiğinin ve ActionScript üzerinden programlama yoluyla gönderilen olay nesneleri için var olmadığının anlaşılması önemlidir. Örneğin,
textInput
türünde bir olay nesnesi göndermek için EventDispatcher sınıfının yöntemlerini kullanabilirsiniz ancak bu olay nesnesi kendisiyle ilişkilendirilmiş varsayılan bir davranışa sahip olmaz. Başka bir deyişle, Flash Player ve AIR, programlama yoluyla gönderdiğiniz
textInput
olayının sonucunda TextField nesnesinde bir karakter görüntülemez.
ActionScript 3.0'daki olay dinleyicilerine yönelik yenilikler
ActionScript 2.0
addListener()
yöntemini kullanma konusunda deneyimli geliştiriciler için, ActionScript 2.0 olay dinleyicisi modeli ile ActionScript 3.0 olay modeli arasındaki farklılıkların belirtilmesi yardımcı olacaktır. Aşağıdaki listede, iki olay modeli arasındaki önemli farklılıklar açıklanmaktadır:
-
ActionScript 2.0'da olay dinleyicileri eklemek için, bazı durumlarda
addListener()
yöntemini ve bazı durumlarda da
addEventListener()
yöntemini kullanırken, ActionScript 3.0'da tüm durumlarda
addEventListener()
yöntemini kullanırsınız.
-
ActionScript 2.0'da herhangi bir olay akışı yoktur, başka bir deyişle,
addListener()
yöntemi yalnızca olayı yayınlayan nesnede çağrılabilir, ActionScript 3.0'da ise olay akışının parçası olan herhangi bir nesnede
addEventListener()
yöntemi çağrılabilir.
-
ActionScript 2.0'da, işlevler, yöntemler veya nesneler olay dinleyicileri olabilirken, ActionScript 3.0'da yalnızca işlevler ya da yöntemler olay dinleyicileri olabilir.
|
|
|
|
|