ActionScript: Launch a function after a delay with setTimeout

Il a y différentes façons de lancer une fonction après un délais :

  • Avec un évènement enter frame
  • Avec une instance de la classe Timer
  • Avec une animation Motion Tween
  • Avec un évènement enter frame et la fonction getTimer
  • Et avec la fonction setTimeout (Voir setTimeout  sur le livedocs d’Adobe)

Comment utiliser le setTimeout ?

  • Tout d’abord il faut créer une variable assignée à l’identifiant du setTimout
var intervalIndentifier
  • La fonction setTimeout retourne un identifiant unique (uint) à chaque fois que vous appelez cette fonction. Sauvegarder cet identifiant dans la variable dédiée.
// La fonction hello va se lancer dans 2000 ms
intervalIdentifier = setTimeout(hello, 2000)
function hello() {
    trace("function launched")
}
  • Cet ideitifiant doit être supprimé avec la fonction cleatTimeout pour stopper le processus si la fonction du setTimeout n’a pas été appelée.
clearTimeout(intervalIdentifier)

NB :

  • Si vous souhaitez lancer un setInterval déjà lancé n’oubliez pas de supprimer l’ancien identifiant. Dans ce cas le précédent setTimeout ne sera pas arrêté.
  • Il faut savoir que le setTimeout ne peut pas être en pause ou relancé après son arrêt.
  • Toujours assigner une variable pour chaque setTimout
  • Le délais du setTimout est basé sur le temps et non pas sur la durée des frames.
  • Quand vous supprimez un setTimeout la fonction qui devait être appelée n’est pas lancée.
  • Vous n’avez pas besoin de supprimer un setTimeout when the setTimeout est déjà terminé mais cela ne coûte rien de le faire quand même.

Ajouter des paramètres dans le setTimeout :

La fonction lancée par le setTimout peut recevoir plusieurs arguments.

Pour ajouter des arguments ajoutez simplement des arguments après le second paramètre du setTimeout:

Bien entendu la fonction qui doit être lancée doit avoir exactement le bon nombre d’arguments.

intervalIdentifier = setTimeout(hello, 2000, "world", "www.benoitfreslon.com")
function hello(arg1, arg2) {
    trace(arg1, arg2)
}

Exemple:

[swf:/wp-content/uploads/2011/01/www.benoitfreslon.com-Launch-a-function-after-a-delay-with-setTimeout.swf 400 250]

Télécharger la source : www.benoitfreslon.com Launch a function after a delay with setTimeout.zip