Olay akışı

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

Flash Player veya AIR, her olay gerçekleştiğinde olay nesneleri gönderir. Olay hedefi görüntüleme listesinde bulunmuyorsa, Flash Player veya AIR doğrudan olay hedefine olay nesnesini gönderir. Örneğin, Flash Player doğrudan bir URLStream nesnesine ilerleme olay nesnesini gönderir. Ancak olay hedefi görüntüleme listesinde bulunuyorsa, Flash Player, görüntüleme listesine olay nesnesini gönderir ve olay nesnesi, görüntüleme listesi üzerinden olay hedefine doğru seyahat eder.

Olay akışı , bir olay nesnesinin görüntüleme listesi üzerinden nasıl hareket ettiğini açıklar. Görüntüleme listesi, ağaç olarak tanımlanabilen bir hiyerarşide organize edilir. Görüntüleme listesi hiyerarşisinin en üstünde Sahne Alanı yer alır, bu, görüntüleme listesinin kökü görevini gören özel bir görüntüleme nesnesi kabıdır. Sahne Alanı, flash.display.Stage sınıfı tarafından temsil edilir ve yalnızca bir görüntüleme nesnesi üzerinden Sahne Alanı'na erişilebilir. Her görüntüleme nesnesi, söz konusu uygulamanın Sahne Alanı'nı ifade eden stage adında bir özelliğe sahiptir

Flash Player veya AIR, görüntüleme listesiyle ilgili bir olay için bir olay nesnesi gönderir, bu olay nesnesi, Sahne Alanı'ndan hedef düğüme gidişli dönüşlü bir seyahatte bulunur. DOM Olayları Belirtimi, hedef düğümü olay hedefini temsil eden düğüm olarak tanımlar. Başka bir deyişle, hedef düğüm, olayın gerçekleştiği görüntüleme listesi nesnesidir. Örneğin, kullanıcı child1 adında bir görüntüleme listesi nesnesini tıklatırsa, Flash Player veya AIR uygulaması hedef düğüm olarak child1 öğesini kullanarak bir olay nesnesi gönderir.

Olay akışı kavramsal olarak üç bölüme ayrılmıştır. Birinci bölüm yakalama aşaması olarak adlandırılır; bu aşama Sahne Alanı'ndan hedef düğümün üst öğesine kadar tüm düğümleri kapsar. İkinci bölüm hedef aşaması olarak adlandırılıp yalnızca hedef düğümü içerir. Üçüncü bölüm ise köpürme aşaması olarak adlandırılır. Köpürme aşaması, hedef düğümün üst öğesinden geri Sahne Alanı'na doğru dönüş yolculuğunda karşılaşılan düğümleri kapsar.

Aşağıdaki diyagramda gösterildiği gibi, görüntüleme listesini, Sahne Alanı'nın en üstte bulunduğu dikey bir hiyerarşi olarak algılarsanız, aşamaların adları daha anlamlı gelecektir:

Kullanıcı Child1 Node üzerini tıklatırsa, Flash Player veya AIR uygulaması olay akışına bir olay nesnesi gönderir. Aşağıdaki görüntüde gösterildiği gibi, nesnenin seyahati Stage öğesinde başlar, Parent Node öğesinden aşağı devam ederek Child1 Node öğesine ilerler ve sonra geri Stage öğesine doğru "köpürerek" Stage öğesine doğru seyahati sırasında tekrar Parent Node üzerinden hareket eder.

Bu örnekte, yakalama aşaması, ilk aşağı doğru seyahat sırasında Stage ve Parent Node öğelerini kapsar. Hedef aşaması, Child1 Node üzerinde harcanan süreyi kapsar. Köpürme aşaması, geri kök düğüme doğru yukarı yönde yapılan seyahat sırasında karşılaşılan Parent Node ve Stage öğelerini kapsar.

Olay akışı, ActionScript programcıları için önceden kullanılabilir olan olay işleme sisteminden daha güçlü bir olay işleme sistemi elde edilmesine katkıda bulunur. Önceki ActionScript sürümlerinde olay akışı yoktur, başka bir deyişle, olay dinleyicileri yalnızca olayı oluşturan nesneye eklenebilir. ActionScript 3.0'da, yalnızca hedef düğüme değil, aynı zamanda olay akışındaki herhangi bir düğüme de olay dinleyicileri ekleyebilirsiniz.

Bir kullanıcı arabirimi bileşeni birden çok nesneyi kapsadığında, olay akışı sırasında olay dinleyicileri ekleme yeteneği yararlı olur. Örneğin, bir düğme nesnesi genellikle düğmenin etiketi görevini gören bir metin nesnesi içerir. Olay akışına dinleyici ekleme yeteneği olmadığında, düğmenin herhangi bir yerinde oluşan tıklatma olayları hakkında bildirim almak için hem düğme nesnesine hem de metin nesnesine dinleyici eklemeniz gerekir. Olay akışının olması ise, düğme nesnesine, hem metin nesnesi üzerinde hem de düğme nesnesinin metin nesnesinin kaplamadığı alanları üzerinde gerçekleşen tıklatma olaylarını işleyen tek bir olay dinleyicisi yerleştirmenize olanak sağlar.

Ancak her olay nesnesi, olay akışının üç aşamasına da katılmaz. enterFrame ve init gibi bazı olay türleri, doğrudan hedef düğüme gönderilir ve yakalama aşamasına ve köpürme aşamasına katılmaz. Başka olaylar da, Socket sınıfının bir örneğine gönderilen olaylar gibi görüntüleme listesinde bulunmayan nesneleri hedefleyebilir. Bu olay nesneleri de yakalama ve köpürme aşamalarına katılmadan doğrudan hedef nesneye akar.

Belirli olay türlerinin nasıl davrandığını öğrenmek için, API belgelerini kontrol edebilir veya olay nesnesinin özelliklerini inceleyebilirsiniz. Olay nesnesinin özelliklerinin incelenmesi, aşağıdaki bölümde açıklanmıştır.