Timer Sınıfı ile Fonksiyonların Süreye Bağlı Kontrolü

Etiketler:




Timer sınıfı bir nevi Action Script 2 deki setInterval ile aynı işlevi görür. Kullanımı oldukça basittir. Önce bir değişken oluşturulur ve sınıf olarak Timer' a ayarlanır.

var ilkTimer:Timer=new Timer(1000);

Burada ilk Timer değişkenimizi tanımladık. 1000 argümanı, 1000 milisaniyede bir yani saniyede 1 işlevin gerçekleşmesini sağlıyor.

var ilkTimer:Timer=new Timer(1000,3600);

Yeni bir parametre olarak da 3600 argümanı, yani ikinci argüman. İkinci argüman ise bu işlemin 3600 defa yani 60x60 dan 1 saat boyunca çalıştırılması manasına gelmekte.

Değişkenimizi bir fonksiyon ile ilişkilendirirken fonksiyonun event ismi TimerEvent olmalıdır.

function timerFn(e:TimerEvent):void
{
trace("a");
}

Fonksiyonu tanımladıktan sonra sıra addEventListener yani olay dinleyicisi ekleyerek fonksiyonu Timer değişkenine bağlamaya geldi.

ilkTimer.addEventListener(TimerEvent.TIMER,timerFn);

function timerFn(e:TimerEvent):void
{
trace("a");
}
ilkTimer.start();


ilkTimer.start(); komutu ilede fonksiyonun işlevini başlattık. Eğer o komutu yazmazsanız, fonksiyon işlemez.

Test ettiğiniz saniye başı OutPut panelinde "a" yazacaktır.

Bunları kullanarak ufak bir uygulama geliştirelim. Bu uygulamada bir sayaç olsun ve saniye başı 1 artsın. Bunun yanında Başlat ve Durdur butonları bulunsun. Bu butonlara göre sayaç başlasın veya dursun. Ayrıca bu sayaç en fazla 10' a kadar artsın. 10 olunca sayaç dursun.

Butonlardan birincisinin instance name'i btnStart diğerinin btnStop ( Butonları Flash programının kendisinde olan Components penceresinden bulabilirsiniz ), sayaçı gösterecek textin ise txtSayac olsun. Ve bir de artacak olan sayı yani sayi değişkeni olsun.




Sonuç bu olacaktır :



Ama şöyle bir sorun var, sayım bittikten sonra 10 da durunca Başlat'a her tıklayışınızda sayı artmakta. Bunu engellemek için de şöyle bir yol buldum. 
startTimer fonksiyonuna bir sayı kontrolü ekleyeceğiz, yani fonksiyonun yeni hali böyle olacak :

function startTimer(e:MouseEvent):void
{
if(sayi<10)
{
timer.start();
}
}



Hiç yorum yok:

Yorum Gönder

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