Flash  »  Articoli  »  Actionscript 

La gestione del tempo in Flash

di: Davide Beltrame     12 Gennaio 2007

Nella vita professionale di uno sviluppatore accade prima o poi di affrontare la gestione del tempo. Sia che si lavori ad un gioco o ad un'applicazione infatti, può capitare di dover avviare un evento solo in un momento prestabilito, o ad intervalli regolari, o ancora dopo un certo numero di secondi da quando l'utente ha compiuto una determinata azione. Flash mette a disposizione alcuni comandi che, direttamente o combinati con altri, consentono di gestire il tempo all'interno del filmato SWF:

  • getTimer (disponibile da Flash 4)
  • setInterval (disponibile da Flash Mx in poi)
  • setTimeout (funzione non documentata di Flash 8)

Rispettivamente, getTimer restituisce i millisecondi trascorsi dall'inizio del filmato, setInterval imposta un intervallo per cui ogni x secondi verrà chiamata una funzione, mentre setTimeout imposta un intervallo per cui dopo x secondi la funzione verrà chiamata una sola volta.

In alcuni casi, specialmente in combinazione con getTimer, viene utilizzato anche il comando onEnterFrame

Questi comandi consentono di fare praticamente qualsiasi cosa con il tempo all'interno di Flash: li analizzeremo uno ad uno, proponendo qualche esempio pratico di utilizzo, iniziando dal più "anziano": getTimer.

Il comando getTimer

È il comando che garantisce la maggior compatibilità, infatti è disponibile sin dalla versione 4 del Flash Player, ed è in grado di restituire il numero di millisecondi trascorsi dall'inizio del filmato. Poichè non è possibile impostare un "punto di avvio" del conteggio, questa funzione potrebbe apparire piuttosto limitata, ma con pochi accorgimenti si rivela utile in molteplici occasioni.

Sintassi di getTimer()

//Associamo ad una variabile il valore restituito da getTimer
variabile = getTimer();

Un semplice esempio

Vogliamo mostrare in un campo di testo il numero di secondi trascorsi dall'inizio del filmato. Per prima cosa creiamo il campo di testo dinamico (con nome istanza "tempo") sullo stage, quindi nelle azioni del primo fotogramma scriviamo:

_root.onEnterFrame = function(){
  tempo.text = int(getTimer()/1000) + " secondi"
}

Ad ogni fotogramma della timeline principale verrà aggiornato il campo di testo "tempo", e vi sarà scritto il valore di getTimer (diviso per 1000, per ottenere i secondi, e arrotondato all'intero) accompagnato dalla scritta "secondi".

Abbiamo utilizzato il comando onEnterFrame per rendere l'azione continua: un altro metodo usato per tale scopo, specialmente in versioni precedenti a Flash Mx, era quello di creare due fotogrammi sulla timeline, con l'azione da ripetere sul primo fotogramma, in modo che il filmato ripartisse di continuo e ri-eseguisse l'azione. L'utilizzo di un EnterFrame è decisamente più comodo, quindi assolutamente consigliato per chi abbia versioni di Flash superiori alla 5.

Guide Flash

Guida ActionScript 3 di base

Apprendere, in poche lezioni, le nozioni fondamentali per gestire...

Guida FlashDevelop

Installare e usare FlashDevelop, potente ambiente di sviluppo open...

Guida Flash Builder 4

Un percorso alla scoperta delle potenzialità più importanti...

Altre guide

Newsletter @Flash

Ogni martedì, guide, articoli, FAQ, movie, audio su Macromedia Flash e Actionscript direttamente nella tua casella di posta

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti