Türkçescript

Actionscript 3.0 ile kalan zamanı hesaplama..

19 Ocak 2010,

Bu derste; ActionScript 3.0 kullanarak, ileriki bir tarih ile şu anki tarih arasındaki sürenin gün-saat-dakika-saniye cinsinden hesaplanmasını göstereceğim. Sol tarafta dersin bitmiş hali görünüyor.

Konuya geçecek olursak; Öncelikle bir tarih belirlememiz gerekiyor. Bu tarih önümüzdeki günlerden biri olsun; ben yukarıda önemli bir tarih belirledim. Şimdi bu tarihe kadar olanki süreyi hesaplayıp, dinamik olarak sahnede gösterelim.

İlk önce flash dosyamızı oluşturalım (File/New/Flash File (ActionScript 3.0). Şimdi sahneye bir dynamic text ekliyorum(daha önceki derslerde anlattım). Örnek ismini (instance name); zaman_txt verdim.

Bu derste maskeleme falan kullanmayacağım ama yine de her ihtimale karşı, sahnedeki dinamik text alanımıza; Embed butonuna basarak Numerals ve Punctuation karakterlerini embed ediyorum.

Şimdi text katmanının üzerine yeni bir katman oluşturalım (Insert/Timeline/Layer). Bu katman Actions katmanımız olacak. Şimdi ActionScript 3.0 kodumuzu yazalım.

var sonTarih:Date = new Date(2010,9,29);
var zamanlayici:Timer = new Timer(1000);
zamanlayici.addEventListener(TimerEvent.TIMER, zamaniHesapla);
zamanlayici.start();

function zamaniHesapla(e:TimerEvent):void
 {
  var simdikiTarih:Date = new Date();
  var kalanZaman:Number = sonTarih.getTime() - simdikiTarih.getTime();
  var saniye:Number = Math.floor(kalanZaman / 1000);
  var dakika:Number = Math.floor(saniye / 60);
  var saat:Number = Math.floor(dakika / 60);
  var gun:Number = Math.floor(saat / 24);

  saniye %= 60;
  dakika %= 60;
  saat %= 24;

  var sn:String = saniye.toString();
  var dk:String = dakika.toString();
  var sa:String = saat.toString();
  var g:String = gun.toString();

  if (sn.length < 2) {
   sn = "0" + sn;
  }

  if (dk.length < 2) {
   dk = "0" + dk;
  }

  if (sa.length < 2) {
   sa = "0" + sa;
  }

  var zaman:String = g + ":" + sa + ":" + dk + ":" + sn;
  zaman_txt.text = zaman;
 }

Yukarıda ilk olarak Date sınıfını kullanarak son tarihi belirledim, yani ulaşacağımız tarih.. Burada dikkat edeceğimiz yer; Ayların 0′dan başladığı.. Dolayısıyla ay için bir eksik rakam giriyorum (Ekim için 10 yerine 9 girmek gibi).

NOT : Zaman birimi değerleri ile ilgili daha kapsamlı bilgiye buradan ulaşabilirsiniz.

Daha sonra Timer sınıfını kullanarak zamanlayici isimli nesnemizi oluşturdum. Sonra bu zamanlayici’yı tetiklemek için “TimerEvent.TIMER” olayına kaydettim. Zamanlayici nesnesinin çalışması için ayrıca start() metodunu kullanıyoruz.

Son olarak zamaniHesapla fonksiyonumuzu oluşturdum. Bu fonksiyon çalıştığında, kalan zamanı hesaplayor. Foksiyonun içerisinde;

Yine Date sınıfı; simdikiTarih isimli bir değişken yarattım.

sonTarih’ten simdikiTarih’i çıkararak kalanZaman’ı buluyorum ve kalan zamanı; saniye, dakika, saat ve gün’e çeviriyorum.

toString() metodunu kullanarak rakamsal verileri sahnedeki dinamik textimde göstereceğim. Bununla birlikte ondalık sınırlamalarımı yaptım.

Son olarak; sahnede oluşturduğum zaman_txt örnek isimli dinamik textime, gelen veriyi atıyorum.

Kaynak dosyayı buradan indirebilirsiniz. Teşekkürler..

1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 5,00 out of 5)
Loading ... Loading ...
:, , , , , ,
5 yorum var:
  1. macerron

    güzel bir örnek olmuş ancak Timer yerine EnterFrame kullansanız daha az kafa karıştırıcı olacağını düşünüyorum… örnek olarak aşağıya yazdım..

    var sonTarih:Date = new Date(2010,9,29);

    stage.addEventListener(Event.ENTER_FRAME, zamaniHesapla);

    function zamaniHesapla(e:Event):void {

    //fonksiyon içeriği aynı

    }

    Paylaşımınız için teşekkürler..

  2. admin

    Doğrudur, ama konu as3 olduğu için, onunla gelen bir class kullanmak istedim.. ilgine teşekkür..

  3. Hasan

    Merhaba yukarıda yer alan kodu
    bloguma html kod kısmında ekledım ancak calısmıyor. yardımcı olurmusun blog ıcın bende yukarıdakı gıbı bırsey arıyorum.

  4. admin

    Html kısmına derken?? tam olarak anlayamadım..
    bu bir flash kodudur flash içerisinde actions paneline eklemen lazım daha sonra da publish edip ondan sonra html de çıkan kodu bloğunun kaynağına eklemen lazım..

  5. AttAcK.58

    Hocam herhalde kodları HTML içine gömmüş.Yani Flash içinde değil de normal HTML olarak kullanmış…

Yanıtla

İsim

Mail

Websitesi    

*

Bağlantılar!

Kendi projelerimiz ve arkadaşlarımızın projeleri...