[:en]There are different ways to launch a function after a delay:
- With the enter frame event;
- With the Timer class;
- With a motion tween;
- With the enter frame event and the getTimer() method;
- And with the setTimeout function (See setTimeout help on Adobe);
How to master the setTimeout ?
- First of all you must create a variable assigned to the setTimeout identifier;
var intervalIndentifier
- The setTimeout function returns an identifier (uint) when you call this function. Save this identifier into the assigned variable;
// The hello function will be launched in 2000 ms intervalIdentifier = setTimeout(hello, 2000) function hello() { trace("function launched") }
- This identifier must be clear with the clearTimeout function in order to stop the setTimeout;
clearTimeout(intervalIdentifier)
NB:
- If you want to launch a setInterval already launched don’t forget to clear the previous setInterval. In witch case the previous setInterval won’t be stopped;
- The setTimeout function can’t be paused or resumed;
- Assign one variable by one setTimout;
- The setTimeout function is based on clock time not on frames time;
- When you clear the setTimeout the closure function is not launched;
- You don’t have to clear the setTimeout when the setTimeout is already finished;
Add parameters
The setTimeout function can receive one or several arguments. Those arguments are passed to the closure function.
To add arguments just add your arguments after the second parameter into the setTimeout function:
Obviously your closure function must have the same number of 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]
Download source: www.benoitfreslon.com Launch a function after a delay with setTimeout.zip[:fr]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[:]