www.gizliorman.net
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Bu site Secret-Forestin hayranları içindir.
 
AnasayfaGaleriLatest imagesAramaKayıt OlGiriş yap

 

 ActionScript 3.0 : Olaylar III: Hedef Nesneye (Target Object) Erişme

Aşağa gitmek 
YazarMesaj
wantedteams




Erkek Mesaj Sayısı : 114
Yaş : 32
Nerden : Pardon Secretmelos.
Lakap : Ne diyorsun ya.
Kayıt tarihi : 09/02/09

ActionScript 3.0 : Olaylar III: Hedef Nesneye (Target Object) Erişme Empty
MesajKonu: ActionScript 3.0 : Olaylar III: Hedef Nesneye (Target Object) Erişme   ActionScript 3.0 : Olaylar III: Hedef Nesneye (Target Object) Erişme Icon_minitimePerş. Şub. 12, 2009 11:12 am

Her olay dağıtımı sırasında, olay nesnesi, olay dinleyicinin “target” özelliği ile hedef nesneye ulaşımını sağlar. Event sınıf örneğinin “target” özelliği ile hedef nesneye ulaşılabilir.

Şu örneği inceleyelim;


function tiklaButona(e:MouseEvent):void
{
(e.target).alpha=0.2;
trace(e.target);
}
// [object SimpleButton]Örnekte, (e.target).alpha=0.2 satırında (e.target) tıklanan butonu gösterirken “deneme_btn” adlı butonun yerine kullanılmıştır. trace(e.target) satırında ise hedef nesnenin SimpleButton nesnesi olduğu öğrenildi.

Olay Dinleyiciye Kayıtlı Nesneye Erişim

Event sınıf örneğinin “currentTarget” özelliği ile olay dinleyicinin kayıtlı olduğu nesneye ulaşım sağlanabilir. Aşağıdaki şekilde görüldüğü gibi “karemc” adlı movieclip içinde “denemebtn” adlı bir buton vardır.


import flash.events.*;
kare_mc.addEventListener(MouseEvent.CLICK, tiklaButona);
function tiklaButona(e:MouseEvent):void
{
trace(e.target.name);
trace(e.currentTarget.name);

}Bu kod satırları çalıştırıldığında, “kare_mc” adlı olay hedefi, “tiklaButona” adlı olay dinleyicisine kaydediliyor. “CLICK” olayı gerçekleştiğinde olay dinleyici fonksiyonlardaki kodları çalıştıracaktır. Yalnız yukarıdaki uygulamada fareye nereden tıklandığı önemlidir. Eğer “karemc” adlı movieclip üzerinde butonun olmadığı bir yerde fareye tıklanırsa fonksiyon, trace(e.target.name) satırında “karemc” çıktısını verecektir. Burada “name” özelliği olay hedefinin instance adını öğrenmek için kullanılmaktadır. Aynı şekilde fonksiyon, trace(e.currentTarget.name) satırında da “kare_mc” çıktısını verecektir. Öte yandan “karemc” adlı movieclip içinde bulunan “denemebtn” butonunun üzerinde fareye tıklanırsa fonksiyon, trace(e.target.name) satırında “denemebtn” çıktısını verecektir. Ancak fonksiyon, trace(e.currentTarget.name) satırında ise “karemc” çıktısını verecektir.

Varsayılan Olay Davranışını (Default Event Behaviour) Engellemek

Bir SimpleButonuna basıldığında, varsayılan olarak butonun “down” durumundaki grafik durumu görünür. INPUT özelliğine sahip TextField nesnesine metin girildiğinde klavyeden basılan karakter ekranda varsayılan olarak görülür. Bazen programcı bu nesnelerin kendilerine ait varsayılan davranışlarını göstermesini istemez. Bunun için de olayın kaydedildiği olay dinleyicisinde, Event sınıfından preventDefault() metoduna ihtiyaç vardır.

Aşağıdaki “GorunmezYazi.as” dosyasında da bir TextField alanına, klavyeden girilen karakterlerin ekranda görünmesi engellenerek yazılan her karakter için ekrana “o” karakterini basması istenmektedir.


package
{
import flash.display.*;
import flash.text.*;
import flash.events.*;

public class GorunmezYazi extends Sprite
{
private var yazi:TextField;
public function GorunmezYazi( )
{

yazi = new TextField( );
yazi.border = true;
yazi.type = TextFieldType.INPUT;
addChild(yazi);
//TextField nesnesi oluşturuldu ve ekrana taşındı

yazi.addEventListener(TextEvent.TEXT_INPUT, yaziListener);

}
private function yaziListener(e:TextEvent):void
http://TextEvent.TEXT_INPUT olayı gerçekleştiğinde olay
// dinleyici çalıştı
{

trace("Yazılan metin " + e.text);
// Kullanıcının TextField alanına girdiği karakterler Output
// ekranında görüntülendi

e.preventDefault( );
// Kullanıcının ekrana girdiği yazıların görünümü engellendi

yazi.appendText("o");
// Klavyeden her yazı yazıldığında TextField alanında "o"
// karakteri göründü

}
}
}Olay Dinleyici Önceliği (Event Listener Priority)

Bir olay türüne, birden fazla olay dinleyicisini kaydetmek mümkündür. Normalde birden fazla olay dinleyici bir olaya kaydedilmişse, program akışı içinde önce yazılan olay dinleyicisi çalıştırılmaktadır. Aşağıdaki “OncelikBelirleme.as” adlı dosyada “buton” adlı nesne, “sira1″ ve “sira2″ adlı iki olay dinleyicisine kayıtlıdır. Eğer program içinde herhangi bir öncelik sırası belirtilmeseydi, önce “sira1″ adlı olay dinleyicisi çalıştırılacaktı ancak aşağıdaki kod satırlarında öncelik belirtildiği için normal akışın tersine önce “sira2″ olay dinleyicisi çalışmaktadır.

Olay dinleyicinin önceliğini değiştirmek için, addEventListener() metodundaki “priority” parametresi ayarlanmalıdır.


addEventListener(type, listener, useCapture, priority, useWeakReference)

buton.addEventListener(MouseEvent.CLICK, sira2,false,1);“priority” parametresi integer değer almaktadır. Bu değer ne kadar büyükse öncelikte o kadar fazladır. Örneğin “priority” parametresi 1 olan olay dinleyici, “priority” parametresi 0 olan olay dinleyiciden daha önceliklidir. Aynı “priority” parametresine sahip olay dinleyicileri varsa, öncelik program akışı içinde önce yazılan olay dinleyicidedir. Varsayılan olarak “priority” parametresi tüm olay dinleyiciler için 0’dır. Böyle olunca da program akışındaki dinleyicinin yazılma sırası önceliği belirlemektedir.




package
{
import flash.display.*;
import flash.events.*;
public class OncelikBelirleme extends Sprite
{
public function OncelikBelirleme( )
{
var buton:Button=new Button();
addChild(buton);
buton.addEventListener(MouseEvent.CLICK, sira1,false,0);
buton.addEventListener(MouseEvent.CLICK, sira2,false,1);
}
private function sira1(e:Event):void
{
trace("sira1 sonra gerçekleşti");
}
private function sira2(e:Event):void
{
trace("sira2 önce gerçekleşti");
}
}
}

// Program Ekran Çıktısı
// sira2 önce gerçekleşti
// sira1 sonra gerçekleştiZayıf Dinleyici Referansı (Weak Listener References)

ActionScript 3.0, zayıf ve kuvvetli bellek referansı diye nesneler üzerinde bellek yönetimi gerçekleştirmektedir. Genellikle bir nesneye yönelik belirli bir referans yoksa, nesne bellek çöp toplayıcılar tarafından toplanarak belleğin gereksiz kullanımı önlenmektedir.

addEventListener() metodundaki “useWeakReference” özelliği “true” yapılarak olay dağıtıcılar ve olay dinleyiciler arasında zayıf bir bağlantı kurulmaktadır. Yani olay dağıtıcılar dinlenirken eğer olay dinleyici silinmişse, zayıf referans değerinin “true” olması ile bellek çöp toplayıcılara izin verilmiş olur. Böylelikle kayıttan çıkarılması unutulan olaylar belleğin gereksiz kullanımı önlenmiş olur.


addEventListener(type, listener, useCapture, priority, useWeakReference)

addEventListener() metodundaki "useWeakReference" özelliğinin
varsayılan değeri "false" dur.Yazan: Muttalip TULGAR Bir sonraki dersimiz, “ActionScript 3.0 : Olaylar IV: İsteğe Göre
Sayfa başına dön Aşağa gitmek
 
ActionScript 3.0 : Olaylar III: Hedef Nesneye (Target Object) Erişme
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» ActionScript 3.0 : Olaylar IV: İsteğe Göre Oluşturulan Olaylar (Custom Events)
» ActionScript 3.0 Olaylar ve Olay İşleyiciler
» ActionScript 3.0: Özellikler
» ActionScript 3 ile Diziler
» ActionScript 3 Giriş

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
www.gizliorman.net :: Flash Dersleri-
Buraya geçin: