How I Did It: scrivere un countdown in Flash

Venerdì 14 Settembre, 2007

Per la serie "How I Did It" (ovvero come lo feci) ecco come realizzare un countdown in Flash per visualizzare, partendo da un data, quanto giorni, ore, minuti e secondi mancano ad un evento! Nel filmato Flash qui sotto, ad esempio, vediamo quanti giorni mancano al primo dell'anno! Possono essere utilizzati i menu a tendina per selezionare un diversa data:

Loading Flash Player...

Creiamo tre combo day_cmb, month_cmb ed year_cmb e li inizializziamo:

Actionscript:
  1. // init combo
  2. import mx.controls.ComboBox;
  3. //
  4. for (var i = 1; i <32; i++) {
  5.     day_cmb.addItem(i, i);
  6. }
  7. var sm:Array = Array("Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre");
  8. for (var i = 0; i <12; i++) {
  9.     month_cmb.addItem(sm[i], i);
  10. }
  11. // potrei partire dall'anno attuale...
  12. for (var i = 2007; i <2020; i++) {
  13.     year_cmb.addItem(i, i);
  14. }
  15. // imposto la data al 1 gennaio 2008
  16. day_cmb.selectedIndex = 0; // -1
  17. month_cmb.selectedIndex = 0; // -1
  18. year_cmb.selectedIndex = 1;

Il cuore del sistema lo posizioniamo nell'evento onEnterFrame:

Actionscript:
  1. this.onEnterFrame = function() {
  2.     //
  3.     var today:Date = new Date();
  4.     var currentYear = today.getFullYear();
  5.     var currentTime = today.getTime();
  6.     //
  7.     var targetDate:Date = new Date(year_cmb.selectedItem.data, month_cmb.selectedItem.data, day_cmb.selectedItem.data);
  8.     var targetTime = targetDate.getTime();
  9.     //
  10.     var timeLeft = targetTime - currentTime;
  11.     //
  12.     var sec = Math.floor(timeLeft / 1000);
  13.     var min = Math.floor(sec / 60);
  14.     var hrs = Math.floor(min / 60);
  15.     var days = Math.floor(hrs / 24);
  16.     //
  17.     sec = String(sec % 60);
  18.     sec = (sec.length <2) ? "0" + sec : sec;
  19.     // 
  20.     min = String(min % 60);
  21.     min = (min.length <2) ? "0" + min : min;
  22.     //   
  23.     hrs = String(hrs % 24);
  24.     hrs = (hrs.length <2) ? "0" + hrs : hrs;
  25.     // 
  26.     days = String(days);
  27.     days = (days.length <2) ? "0" + days : days;
  28.     //
  29.     var counter:String = days + ":" + hrs + ":" + min + ":" + sec;
  30.     //
  31.     time_txt.text = counter;
  32. };

Post correlati

3 commenti a: “How I Did It: scrivere un countdown in Flash”

  1. getAvatar 1.0 Giovedì 04 Ottobre, 2007 alle 10:36
    Sam ha detto:

    Stavo cercando se ci sono bachi per quanto riguarda la gestione Date() di flash e Google mi ha portato qui. Stavo provando un contdown simile a questo e ho notato che sbagliava di un ora. Ma solo se di mezzo c’è un cambio mese; potete provarlo anche sopra. Aumentando di un mese (passando dall’attuale a quello successivo) non solo si incrementano i giorni (di 30 o 31 che sia) ma si incrementa anche l’ora di un unità… Baco o non baco?

  2. getAvatar 1.0 Mercoledì 10 Ottobre, 2007 alle 11:02
    Sam ha detto:

    Ovviamente non ho calcolato il fuso orario… Errore mio…

  3. getAvatar 1.0 Lunedì 13 Ottobre, 2008 alle 00:46
    Una classe countDown in Javascript | Undolog.com ha detto:

    [...] post 3D CountDown con FIVe3D (vedi anche How I Did It: scrivere un countdown in Flash), veniva proposta una classe per la creazione di un oggetto CountDown in Actionscript, eccone una [...]

Lascia un commento

TAG XHTML permessi: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Usa <pre> per racchiudere codice