Olaylar ve Olay Dinleyiciler oluşturduğumuz uygulamara etkileşim kazandırarak işlevselliğin artmasını sağlarlar. En basit örnek olarak sahne üzerindeki bir butona tıklanması da bir olaydır fakat sadece butonlara özgü birşey olmadığını da bilmemiz gerekir. Zamanla ilgili işlemlerde, harici olarak yüklenen bir dosyanın yüklemesi bittiğinde ya da animasyonumuz bittiğinde vb. daha bir çok şey sayılabilir. Sahne üzerinde kullandığımız objeler üzerindeki hakimiyetimizin artmasını sağlarlar. Temel olarak olayları objelerin çevresinde bulunan diğer objelerle etkileşime girmesi olarak ta açıklayabiliriz. Olay dinleyicilerde bu etkileşimleri dinlerler ve belirlediğimiz etkileşim gerçekleştiğinde kod bloklarının çalışmasını ya da diğer olay dinleyicilerin tetiklenmesini sağlarlar.
Oluşturacağımız uygulamalarda en fazla kullanacağımız olay sınıfları ve olaylar:MouseEvent: Fare ile gerçekleşen olayları kontrol eder,
KeyboardEvent: Klavye olaylarını kontrol eder,
TimerEvent:Timer olaylarını kontrol eder,
Event: Genel olayları kontrol eder (örn.: Harici bir dosyanın yüklenip yüklenmediğini, belirli aralıklarla tetiklenmesi gereken olayları vb.).
MouseEventolay sınıfının olaylarını inceleyecek olursak:
CLICK: Tıklama olayı,
DOUBLE_CLICK: Çift tıklama olayı (Bu olay için objenin doubleClickEnabled özelliğinin true olması gerekmektedir.),
MOUSE_DOWN: Farenin sol tuşuna basılı tutma olayı,
MOUSE_MOVE: Farenin hareket etmesi,
MOUSE_OUT: Farenin objenin üzerinden çıkması olayı,
MOUSE_OVER: Farenin objenin üzerinde olması,
MOUSE_UP: Fareye basılı tutmayı bırakma olayı,
MOUSE_WHEEL: Fare tekerleği ile gerçekleşen olaylar,
ROLL_OUT: Farenin butonun üzerinden çıkması olayı,
ROLL_OVER: Farenin butonun üzerinde olması
Kullandığımız objelere olay dinleyici atayabilmemiz için objeyi oluşturduktan sonra properties panelinde bulunan Intance Name kısmına mutlaka bir isim vermeliyiz ki ActionScript ile bu objelere müdahale edebilelim (Eğer Movie Clip kullanacaksak ornek_mc, buton kullanacaksak ornek_btn, yazi alanı kullanacaksak ornek_txt gibi.). Şimdi sahne üzerine bir obje ekleyelim ve Button olarak sembole dönüştürelim. Instance Name kısmına da deneme_btn yazalım. Sonrada yeni bir layer ekleyerek adını Action olarak değiştirelim ve F9 tuşu ile Actions panelini açıp aşağıdaki kodları yazalım. deneme_btn.addEventListener(MouseEvent.CLICK, tiklama);function tiklama(e:MouseEvent) {trace(“butona tıklandı”);} Yazdığımız kodu açıklayacak olursak;deneme_btn: Objeye verdiğimiz Instance Name,
addEventListener: Objemize olay dinleyici ekler,
MouseEvent.CLICK: Olay dinleyicimizin hangi olay sınıfını dinleyeceğini belirler, burada fare olaylarından CLICK olayını dinliyor,
tiklama: Belirttiğimiz olay gerçekleştiğinde çalışacak olan fonksiyonun adı,
function tiklama(e:MouseEvent): Buradaki bölümde fonksiyonumuzu tanımlıyoruz ve parantez içerisinde tanımladığımız fonksiyonun hangi olaya göre çalışacağını belirtiyoruz ve bloklar ( { } ) arasına da çalışacak olan kodlarımızı yazıyoruz.
deneme_btn isimli objemize bir olay dinleyici ekliyoruz ve bu olay dinleyici MouseEvent’larından CLICK olayını kontrol ediyor. Olay gerçekleştiğinde ise tiklama isimli fonksiyonu çalıştırıyor. Böylece istediğimiz etkileşimi gerçekleştirmiş oluyoruz.


Bir Objede Olay Dinleyici Olup Olmadığını Kontrol Etmek
Kullandığımız objelerde olay dinleyici olup olmadığını kontrol etmemiz gerekebilir. Bu işlemi gerçekleştirmek için hasEventListenermetodunu kullanmamız gerekir. Kullanımı ise şu şekildekir: if (deneme_btn.hasEventListener(MouseEvent.CLICK)) {trace(“deneme_btn isimli objede olay dinleyici var”);} else {trace(“deneme_btn isimli objede olay dinleyici yok”);}


Olay Dinleyicisini Kaldırma
Yaptığımız uygulamada kullandığımız olay dinleyicileri gerekli olduğu taktirde kaldırmamız yani iptal etmemiz gerekebilir. Bu işlem için removeEventListener metodunu kullanmamız gerekir. Kullanımı ise addEventListener ile aynıdır. Olay dinleyiciyi atadığımız satırda yapmamız gereken tek değişiklik addEventListeneryerine removeEventListenerkullanmaktır. deneme_btn.removeEventListener(MouseEvent.CLICK, tiklama);//objeye atadığımız olay dinleyiciyi kaldırıyoruz