Zaman aralıklarını denetleme

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

Adobe Flash CS4 Professional'ı kullanarak uygulamalar geliştirdiğinizde, uygulamanızda sabit, kare kare ilerleme sağlayan zaman çizelgesine erişiminiz olur. Yalnızca ActionScript projelerindeyse, diğer zamanlama mekanizmalarını kullanmanız gerekir.

Döngüler ve zamanlayıcılar

Bazı programlama dillerinde, for veya do..while gibi döngü deyimlerini kullanarak kendi zamanlama şemalarınızı tasarlamanız gerekir.

Döngü deyimleri genellikle yerel makinenin izin verdiği ölçüde hızlı şekilde çalıştırılır, başka bir deyişle, uygulama bazı makinelerde hızlı çalışırken, başka makinelerde yavaş çalışabilir. Uygulamanız için tutarlı bir zamanlama aralığı gerekirse, uygulamanızı gerçek bir takvim veya saat zamanına bağlamanız gerekir. Oyun, animasyon ve gerçek zamanlı denetleyiciler gibi birçok uygulama için makineden makineye tutarlı olan normal, zaman odaklı şekilde ilerleyen mekanizmalar gerekir.

ActionScript 3.0 Timer sınıfı güçlü bir çözüm sunar. Timer sınıfı, belirtilen zaman aralığına her ulaşıldığında ActionScript 3.0 olay modelini kullanarak zamanlayıcı olaylarını gönderir.

Timer sınıfı

ActionScript 3.0'da zamanlama işlevlerini işlemenin tercih edilen yolu, bir aralığa her ulaşıldığında olayları göndermek için kullanılabilen Timer sınıfının (flash.utils.Timer) kullanılmasıdır.

Bir zamanlayıcıyı başlatmak için, ilk olarak bir Timer sınıfı örneğini oluşturarak bu sınıfa ne sıklıkla bir zamanlayıcı olayı oluşturacağını ve durmadan önce kaç defa bunu yapacağını bildirirdiniz.

Örneğin, aşağıdaki kod, her saniye bir olay gönderen ve 60 saniye boyunca bu işleme devam eden bir Timer örneğini oluşturur:

var oneMinuteTimer:Timer = new Timer(1000, 60);

Timer nesnesi, belirli bir aralığa her ulaşıldığında bir TimerEvent nesnesi gönderir. TimerEvent nesnesinin olay türü timer ( TimerEvent.TIMER sabitiyle tanımlı) olur. TimerEvent nesnesi, standart bir Event nesnesiyle aynı özellikleri içerir.

Timer örneği sabit sayıda bir aralığa ayarlanırsa, son aralığa ulaştığında bir timerComplete olayı da ( TimerEvent.TIMER_COMPLETE sabitiyle tanımlı) gönderir.

Aşağıda, Timer sınıfını eylem halinde gösteren küçük bir örnek uygulama yer almaktadır:

package  
{ 
    import flash.display.Sprite; 
    import flash.events.TimerEvent; 
    import flash.utils.Timer; 
 
    public class ShortTimer extends Sprite 
    { 
        public function ShortTimer()  
        { 
            // creates a new five-second Timer 
            var minuteTimer:Timer = new Timer(1000, 5); 
             
            // designates listeners for the interval and completion events 
            minuteTimer.addEventListener(TimerEvent.TIMER, onTick); 
            minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete); 
             
            // starts the timer ticking 
            minuteTimer.start(); 
        } 
 
        public function onTick(event:TimerEvent):void  
        { 
            // displays the tick count so far 
            // The target of this event is the Timer instance itself. 
            trace("tick " + event.target.currentCount); 
        } 
 
        public function onTimerComplete(event:TimerEvent):void 
        { 
            trace("Time's Up!"); 
        } 
    } 
}

ShortTimer sınıfı oluşturulduğunda, bu sınıf beş saniye boyunca saniyede bir defa ilerleyecek bir Timer örneği oluşturur. Daha sonra zamanlayıcıya iki dinleyici ekler: biri ilerlemelerin her birini dinler, diğeri de timerComplete olayını dinler.

Ardından zamanlayıcı ilerlemesini başlatır ve bu noktadan itibaren bir saniyelik aralıklarla onTick() yöntemi çalıştırılır.

onTick() yöntemi geçerli ilerleme sayısını gösterir. Beş saniye geçtikten sonra, onTimerComplete() yöntemi çalıştırılarak zamanın dolduğunu bildirir.

Bu örneği çalıştırdığınızda, konsolunuzda veya izleme pencerenizde, saniyede birer satır hızında şu satırların görüntülenmesi gerekir:

tick 1 
tick 2 
tick 3 
tick 4 
tick 5 
Time's Up!

flash.utils paketinde zamanlama işlevleri

ActionScript 3.0, ActionScript 2.0'dakine benzer çok sayıda zamanlama işlevi içerir. Bu işlevler, flash.utils paketinde paket düzeyinde işlevler olarak sağlanır ve ActionScript 2.0'daki gibi çalışır.

İşlev

Açıklama

clearInterval(id:uint):void

Belirtilen bir setInterval() çağrısını iptal eder.

clearTimeout(id:uint):void

Belirtilen bir setTimeout() çağrısını iptal eder.

getTimer():int

Adobe® Flash® Player veya Adobe® AIR™ başlatıldıktan sonra geçen milisaniye sayısını döndürür.

setInterval(closure:Function, delay:Number, ... arguments):uint

Bir işlevi belirtilen bir aralıkta (milisaniye olarak) çalıştırır.

setTimeout(closure:Function, delay:Number, ... arguments):uint

Belirtilen bir işlevi belirtilen bir gecikmeden sonra (milisaniye olarak) çalıştırır.

Bu işlevler, geriye doğru uyumluluk için ActionScript 3.0'da kalmıştır. Adobe, bunları yeni ActionScript 3.0 uygulamalarında kullanmanızı önermez. Genellikle uygulamalarınızda Timer sınıfının kullanılması hem daha kolay hem de daha verimlidir.