addEventListener() - Dinleyici Ekleme ve Fonksiyon Bağları

Etiketler:




Olay dinleyicileri nesne ile kullanıma sokulacak fonksiyon arasındaki bağı sağlayan sistemlerdir. Action Script 2'de pek kullanılmasa da Action Script 3' de zorunluluk hali almış diyebiliriz. 

Peki nedir bu ? 

Action Script 'de yer alan Mouse,Keyboard,Event... gibi tonlarca olayın yönetimini sağlayan ve bir nevi onu tamamlayan yapıdır. 

Örneğin bir butona Mouse ile tıklanması, klavyeden bir tuşa basılıp çekilmesi gibi (bunlar yalnızca basit olanlar) olayların kontrolünü sağlar. 

Nasıl kullanılır ?

Öncelikle bir fonksiyon tanımlanmalıdır. Bu fonksiyon da yapılacak olay (Event) ın türü belirlenmelidir ve fonksiyona yapılacak işlemler eklenmelidir. 

Daha sonra ise olayın ekleneceği nesne belirtilir, olay dinleyici eklenir ve olayın türünün ardından olay türünün yapacağı işlem belirtilir ve bu olayın atanacağı fonksiyon gösterilir. 

Şöyle kullanabiliriz :

Öncelikle sahneye bir buton oluşturalım ve instance name kısmına yeniButon yazalım. Daha sonra kodları aktaralım :

function yeniFonksiyon(e:MouseEvent):void{
//Fonksiyon tanımlanır ve Event türü belirlenir.
trace("Fonksiyon çalıştırıldı.")
//Yapılacak işlem belirtilir.
}
yeniButon.addEventListener(MouseEvent.CLICK,yeniFonksiyon);
//Nesne adı belirtilip olay dinleyici eklenir. Event türü ve metodu belirlenip fonksiyona atanır.


Test ettiğimizde ekrandaki butona her bastığımızda OutPut penceresinde trace komutu içindeki yazı yazdırılacaktır. 

Sanırım addEventListener'ı biraz anlamışsınızdır. Eğer kodumuzdaki 6.satırı yani olay dinleyicisi kısmını silerseniz hiçbir fonksiyon çalışmayacaktır ve siz sadece sahnede gördüğünüz bir butona boş boş bakıp tıklayacaksınız. Ama tıklama işlemi sonucunda hiçbir olay olmayacak. 

Bu durumda olayı yöneten kısımın addEventListener bulunan satır olduğunu kavrayacaksınız. :)

Şimdi de ufak bir yine oyunlarda ve uygulamalarda çok kullanılan Keyboard event'ı yapalım. Bu sefer sahnede iken SPACE tuşuna basıldığında OutPut penceresinde "Space Tuşuna Basıldı." yazdırsın. 

Herhangi bir şeyi sahneye eklemenize gerek yok. Direk kodları yazmalısınız. 



function spaceBas(e:KeyboardEvent):void {
//Fonksiyonu tanımladık ve Event türünü belirledik.
if (e.keyCode==Keyboard.SPACE) {
//Eğer klavyeden SPACE tuşuna basılırsa
trace("Space Tuşuna Basıldı.");
//OutPut penceresinde belirtilen yazı yazılsın.
}
}
stage.addEventListener(KeyboardEvent.KEY_DOWN,spaceBas);
//Nesne adı belirtilip olay dinleyici eklenir. Event türü ve metodu belirlenip fonksiyona atanır.

Test ettiğimizde SPACE tuşuna her basışımızda göreceğiz ki OutPut penceresine her yeni bir satırda trace() içerisinde belirttiğimiz yazı yazdırılmaktadır.

Şimdi bu uygulamayı biraz daha geliştirelim ve şöyle bir şey yapalım. Space e her basıldığında yine aynı yazı yazdırılsın. Ancak Space den elimizi çektiğimizde de "Space Tuşu Bırakıldı." yazılsın. Bunun için kodlarımıza hemen şu satırları ekliyoruz. Ama eklemeden önce açıklamak isterim : 

KEY_DOWN : Bir tuşa basılma olayında kullanılır.
KEY_UP : Bir tuştan elimizi çekme olayında kullanılır.



Kodlar :


function spaceBas(e:KeyboardEvent):void {
//Fonksiyonu tanımladık ve Event türünü belirledik.
if (e.keyCode==Keyboard.SPACE) {
//Eğer klavyeden SPACE tuşuna basılırsa
trace("Space Tuşuna Basıldı.");
//OutPut penceresinde belirtilen yazı yazılsın.
}
}
function spaceCek(evt:KeyboardEvent):void {
trace("Space Tuşu Bırakıldı.");
}
stage.addEventListener(KeyboardEvent.KEY_DOWN,spaceBas);
stage.addEventListener(KeyboardEvent.KEY_UP,spaceCek);
//Yeni bir Event ekleyerek tuştan çekilme olayını ekledik.

Yine test ettiğinizde göreceksiniz Space tuşundan elinizi her çekişinizde OutPut penceresinde trace() içindeki kısım yazdırılacaktır. 

Aslında KeyboardEvent ve MouseEvent metotlarını ayrı bir yazımda ele alacağım. Orada daha detaylı olarak hemen her türlü olayı deneyeceğiz. 

Olay dinleyiciler bu kadar. Tabiki çok daha fazla olay türü var ama bunların hepsini bir konuda ele almam mümkün değil ve zamanım da daralmakta. Diğer bir dersimizde görüşmek üzere.

Hiç yorum yok:

Yorum Gönder

 
Action Script - Türkiye © 2012 | Designed by Meingames and Bubble shooter