Il existe la méthode setInterval pour exécuter une fonction à intervalles de temps réguliers. Le seul moyen de stopper ces appels et d'utiliser clearInterval ; mais il nous faut alors connaître le nombre (idInterval) retourné par setInterval.
Il n'est donc pas évident d'utiliser cet ID à l'intérieur même de la fonction appellée.
La syntaxe est similaire à celle de setInterval.
Source / Exemple :
/**
- Retarder l'exécution d'une fonction
-
- @author: Jérôme Tamarelle [ http://tibulle.com ]
- @date: 05-06-2005
- @version 2.0
-
- * * *
-
- Fonctions avec syntaxe similaire à celle de setInterval,
- elles permettent :
-
- 1. exécuter une fonction en différé :
- setInterval(fun, time, args...)
- setInterval(obj, funame, time, args...)
-
- 2. exécuter une fonction n fois à interval de temps régulier :
- setInterval(n, fun, time, args...)
- setInterval(n, obj, funame, time, args...)
-
class com.superdevy.utils.Delay
{
//---o Metas
public static var className:String = "Delay";
public static var classPackage:String = "com.superdevy.utils";
public static var version:String = "2.0";
public static var author:String = "SuperDevy";
public static var link:String = "
http://tibulle.com/";
//---o Fonction unique
public static function setDelay (a, b, c, d) :Number
{
var obj:Object, fun:Function, nb:Number, args:Array, time:Number;
if (typeof(a)=="number" && typeof(c)=="string") {
obj=b, fun=b[c], nb=a, args=arguments.slice(3), time=d;
}
else if (typeof(a)=="number" && (b instanceof Function)) {
obj=null, fun=b, nb=a, args=arguments.slice(2), time=c;
}
else if (typeof(b)=="string") {
obj=a, fun=a[b], nb=1, args=arguments.slice(3), time=c;
}
else if (a instanceof Function) {
obj=null, fun=a, nb=1, args=arguments.slice(2), time=b;
}
else {
return NaN;
}
var interval = function(obj:Object, args:Array) :Void {
fun.apply(obj, args);
if((--nb)<1) clearInterval(idInterval);
}
var idInterval = setInterval(interval, time, obj, args);
return idInterval;
}
//---o Supprime tous les intervals
public static function clearAllIntervals (Void) :Void {
var i = setInterval(Function, 1000) + 1;
while (i>0) clearInterval(--i);
}
}
Conclusion :
Il est possible de porter les fonctions pour Flash MX.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.