Olay işleme temelleri

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

Olayları, SWF dosyanızdaki, bir programcı olarak ilginizi çeken herhangi türde bir oluşum olarak değerlendirebilirsiniz. Örneğin, çoğu SWF dosyası, ister fare tıklatmasına yanıt vermek gibi basit, ister bir forma girilen verileri kabul etme ve işleme gibi karmaşık olsun, bir şekilde kullanıcı etkileşimini destekler. Bu şekilde SWF dosyanızla gerçekleştirilen herhangi bir kullanıcı etkileşimi olay olarak değerlendirilir. Olaylar herhangi bir doğrudan kullanıcı etkileşimi olmadan da gerçekleşebilir, örn. bir sunucudan veri yüklemesi sona erdiğinde veya takılan bir kamera etkin olduğunda.

ActionScript 3.0'da her olay, Event sınıfının veya alt sınıflarından birinin örneği olan bir olay nesnesi tarafından temsil edilir. Bir olay nesnesi hem belirli bir olayla ilgili bilgileri saklar, hem de olay nesnesinin işlenmesini kolaylaştıran yöntemler içerir. Örneğin, Flash Player veya AIR bir fare tıklatması algıladığında, bu belirli fare tıklatması olayını temsil etmek için bir olay nesnesi (MouseEvent sınıfının bir örneği) oluşturur.

Flash Player veya AIR, bir olay nesnesi oluşturduktan sonra bu olay nesnesini gönderir, başka bir deyişle, olay nesnesi, olayın hedefi olan nesneye iletilir. Gönderilen bir olay nesnesinin hedefi görevini gören bir nesne olay hedefi olarak adlandırılır. Örneğin, takılı bir kamera etkin olduğunda, Flash Player doğrudan olay hedefine (bu durumda kamerayı temsil eden nesne) bir olay nesnesi gönderir. Ancak olay hedefi, görüntüleme listesindeyse, olay nesnesi olay hedefine ulaşıncaya kadar görüntüleme listesi hiyerarşisinden aşağı doğru iletilir. Bazı durumlarda, olay nesnesi görüntüleme listesi hiyerarşisinde aynı rota boyunca geri yukarı doğru "köpürür". Görüntü listesi hiyerarşisindeki bu çapraz geçiş, olay akışı olarak adlandırılır.

Olay dinleyicilerini kullanarak kodunuzda olay nesnelerini "dinleyebilirsiniz". Olay dinleyicileri, belirli olaylara yanıt olarak yazdığınız işlevler veya yöntemlerdir. Programınızın olaylara yanıt vermesini sağlamak için, olay hedefine veya olay nesnesinin olay akışının bir parçası olan herhangi bir görüntüleme listesi nesnesine olay dinleyicileri eklemeniz gerekir.

Her olay dinleyicisi kodu yazdığınızda, bu kod temel yapıyı takip eder (kalın yazı karakterine sahip öğeler, kendi özel durumunuz için dolduracağınız yer tutuculardır):

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

Bu kod iki işlem gerçekleştirir. İlk olarak, olaya yanıt olarak gerçekleştirilecek 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. Gerçekten olay gerçekleştiğinde, olay hedefi, olay dinleyicileri olarak kaydedilen tüm işlevlerin ve yöntemlerin listesini kontrol eder. Ardından, olay nesnesini bir parametre olarak ileterek sırayla her birini çağırır.

Kendi olay dinleyicinizi oluşturmak için bu kodda dört şeyi değiştirmeniz gerekir. İlk olarak, işlevin adını, kullanmak istediğiniz adla değiştirmeniz gerekir. (Kodda eventResponse geçen iki yerde bunun değiştirilmesi gerekir.) İkinci olarak, dinlemek istediğiniz olay (kodda EventType) tarafından gönderilen olay nesnesinin uygun sınıf adını belirtmeniz ve bu belirli olay (listede EVENT_NAME) için uygun sabiti belirtmeniz gerekir. Üçüncü olarak, olayı gönderen (bu kodda eventTarget) nesnede, addEventListener() yöntemini çağırmanız gerekir. İsteğe bağlı olarak, işlevin parametresi (bu kodda eventObject) olarak kullanılan değişkenin adını değiştirebilirsiniz.

Önemli kavramlar ve terimler

Aşağıdaki başvuru listesi olay işleme grafiklerini programlarken karşılaşacağınız önemli terimleri içerir:

Köpürme
Köpürme, bir üst görüntüleme nesnesinin alt nesneleri tarafından gönderilen olaylara yanıt verebilmesi için meydana gelir.

Köpürme aşaması
Olay akışında bir olayın üst görüntüleme nesnelerine yayıldığı kısım. Köpürme aşaması yakalama ve hedef aşamalarından sonra meydana gelir.

Yakalama aşaması
Olay akışında olayın en genel hedeften en belirli hedef nesneye yayıldığı kısım. Yakalama aşaması hedef ve köpürme aşamalarından önce meydana gelir.

Varsayılan davranış
Bazı olaylar, normalde olayla birlikte gerçekleşen ve varsayılan davranış adı verilen bir davranış içerir. Örneğin, kullanıcı bir metin alanına yazı yazdığında, bir metin girdisi olayı ortaya çıkar. Bu olay için varsayılan davranış, metin alanına yazılan karakterin gerçekten görüntülenmesidir—ancak bu varsayılan davranışı geçersiz kılabilirsiniz (herhangi bir nedenle yazılan karakterin görüntülenmesini istemiyorsanız).

Gönderme
Olay dinleyicilerine bir olayın gerçekleştiğini bildirme.

Olay
Nesnede gerçekleşen ve nesnenin diğer nesnelere hakkında bilgi verebileceği bir şey.

Olay akışı
Görüntüleme listesindeki (ekranda görüntülenen bir nesne) bir nesnede olaylar gerçekleştiğinde, söz konusu nesneyi içeren tüm nesnelere olay bildirilir ve bu nesneler de karşılık olarak olay dinleyicilerine bildirim gönderir. Bu işlem Sahne Alanı ile başlar ve görüntüleme listesi üzerinden, olayın gerçekleştiği gerçek nesneye doğru ilerler, ardından tekrar Sahne Alanı'na doğru geri ilerler. Bu işlem olay akışı olarak bilinir.

Olay nesnesi
Belirli bir olayın meydana gelmesi hakkında bilgi içeren bir nesne olup olay gönderildiğinde tüm dinleyicilere gönderilir.

Olay hedefi
Gerçekten bir olay gönderen nesne. Örneğin, kullanıcı Sprite içinde ve dolayısıyla Sahne Alanı içinde de bulunan bir düğmeyi tıklatırsa, bu nesnelerin tümü olaylar gönderir ancak olay hedefi (bu durumda tıklatılan düğme), olayın gerçekten gerçekleştiği yerdir.

Dinleyici
Belirli bir olay gerçekleştiğinde bunun bildirilmesi gerektiğini belirtmek için bir nesneyle kendini kaydeden bir nesne veya işlev.

Hedef aşaması
Olay akışında olayın olabilecek en belirli hedefe ulaştığı nokta. Hedef aşaması yakalama ve köpürme aşamalarının arasında meydana gelir.