« Anteprime sulla versione Beta di Air | Index | Flex 3: anticipazioni - terza puntata »

um_minilogo.gif Cerchi articoli, tutorial e guide su Photoshop CS3, Flash CS3, Premiere Pro CS3, Actionscript 3, Flex 3 e Adobe AIR, Java e Microsoft Silverlight ?
Scarica gratis UserMatter, il magazine che tratta la User Experience. Nell'ultimo numero trovi anche: Introduzione alla programmazione orientata agli oggetti, Salvare le immagini per il web con una mappatura Alpha

Creare un counter in actionscript 3

Talvota, lavorando o studiando nuove classi, nuovi linguaggi capita di imbattersi in esempi ed esercizi che da una parte rafforzano le proprie conoscenze, dall'altro permettono di dare sfogo alla propria creatività. E' il caso, come questo di un "contatore alla rovescia" creato in actionscript 3, mutuato da actionscript 2.
Questo piccolo esempio vi permetterà di creare dei contatori come quello abbiamo creato per il nostro blog e che trovate (o avete trovato) nel nostro sul sito per il conto alla rovescia per l'evento di AdobeLive.

Per prima cosa creiamo la funzione che genererà il conteggio:

function conta(){
var oggi:Date=new Date();
var dataCorrente=oggi.getTime();
var giornoFinale:Date=new Date(2007,9,15);//DATA DA CAMBIARE

Creiamo quindi un'istanza dell'oggetto "Date", ci facciamo ridare il tempo corrente, quindi ci segniamo la data finale, quella del momento finale che ci interessa (in questo caso il 15 ottobre 2007)

Quindi ci segniamo i giorni di differenza.
var giorniMancanti:Number=dataFinale-dataCorrente;

Ora, a scalare progressivamente ci calcoliamo quanti secondi, minuti, ore, giorni mancano.
var sec=Math.floor(giorniMancanti/1000);
var min=Math.floor(sec/60);
var hrs=Math.floor(min/60);
var days=Math.floor(hrs/24);

A questo punto non ci resta che segnarci il "resto" dei secondi in modo tale da far si che ogni 60 secondi aggiunga 1 minuto alla variabile dei minuti. Ogni 60 minuti, aggiunga 1 ora alla variabile delle ore, ecc..:

sec=(sec%60).toString();
if(sec<10){
sec="0"+sec;
}

min=(min%60).toString();
if (min.length<2){
min="0"+min;
}

hrs=(hrs%24).toString();

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

days=(days).toString();

Ora non resta che scrivere tutto nei campi di testo sullo stage, per poter visualizzare il risultato della nostra elaborazione:

giorni_txt.text=days;
ore_txt.text=hrs;
min_txt.text=min;
sec_txt.text=sec;
}

Concludiamo il tutto richiamando la funzione più volte nell'arco del tempo per far si che il contatore scali progressivamente il tempo già dai secondi:

setInterval(conta, 10);

TrackBack

TrackBack URL per questo post:
http://blog.augitaly.com/mt-tb.cgi/270

Invia un commento

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)