How I Did It: scrivere un countdown in Flash
Venerdì 14 Settembre, 2007Per 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:
Creiamo tre combo day_cmb, month_cmb ed year_cmb e li inizializziamo:
-
// init combo
-
import mx.controls.ComboBox;
-
//
-
for (var i = 1; i <32; i++) {
-
day_cmb.addItem(i, i);
-
}
-
var sm:Array = Array("Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre");
-
for (var i = 0; i <12; i++) {
-
month_cmb.addItem(sm[i], i);
-
}
-
// potrei partire dall'anno attuale...
-
for (var i = 2007; i <2020; i++) {
-
year_cmb.addItem(i, i);
-
}
-
// imposto la data al 1 gennaio 2008
-
day_cmb.selectedIndex = 0; // -1
-
month_cmb.selectedIndex = 0; // -1
-
year_cmb.selectedIndex = 1;
Il cuore del sistema lo posizioniamo nell'evento onEnterFrame:
-
this.onEnterFrame = function() {
-
//
-
var today:Date = new Date();
-
var currentYear = today.getFullYear();
-
var currentTime = today.getTime();
-
//
-
var targetDate:Date = new Date(year_cmb.selectedItem.data, month_cmb.selectedItem.data, day_cmb.selectedItem.data);
-
var targetTime = targetDate.getTime();
-
//
-
var timeLeft = targetTime - currentTime;
-
//
-
var sec = Math.floor(timeLeft / 1000);
-
var min = Math.floor(sec / 60);
-
var hrs = Math.floor(min / 60);
-
var days = Math.floor(hrs / 24);
-
//
-
sec = String(sec % 60);
-
sec = (sec.length <2) ? "0" + sec : sec;
-
//
-
min = String(min % 60);
-
min = (min.length <2) ? "0" + min : min;
-
//
-
hrs = String(hrs % 24);
-
hrs = (hrs.length <2) ? "0" + hrs : hrs;
-
//
-
days = String(days);
-
days = (days.length <2) ? "0" + days : days;
-
//
-
var counter:String = days + ":" + hrs + ":" + min + ":" + sec;
-
//
-
time_txt.text = counter;
-
};






















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?
Sam ha detto:
Ovviamente non ho calcolato il fuso orario… Errore mio…
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 [...]