Retarder l'execution d'une fonction

Soyez le premier à donner votre avis sur cette source.

Vue 11 231 fois - Téléchargée 724 fois

Description

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.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

diverman
Messages postés
4
Date d'inscription
vendredi 19 janvier 2007
Statut
Membre
Dernière intervention
26 janvier 2007
-
Je suis un peu nouveau,
donc est ce que quelqu'un pourrait m'expliquer comment faire pour qu'au bout de 10 minutes un son apparaisse(et quelle est la meilleure fonction pour mettre un son dans une animation)!!!

merci d'avance
SuperDevy
Messages postés
842
Date d'inscription
dimanche 24 novembre 2002
Statut
Membre
Dernière intervention
2 juillet 2007
-
J'ai mis à jours la classe vers la version 2.0
Les quatres fonctions initiales ont été concaténées en une seule, pour que l'utilisation soit plus aisée.

Le Zip contient toujours l'ancienne version 1.0
snaaake3
Messages postés
2
Date d'inscription
jeudi 23 décembre 2004
Statut
Membre
Dernière intervention
29 mai 2005
-
Salut SuperDevy,
Ca marche Nikel, Merci merci beaucoup, tu m'enlèves une sacrée épine du pied
Au plaisir
snaaake3
SuperDevy
Messages postés
842
Date d'inscription
dimanche 24 novembre 2002
Statut
Membre
Dernière intervention
2 juillet 2007
-
Tu devrais trouver réponse à ton problème ici :
http://wiki.media-box.net/classes/flash/com/superdevy/utils/delay
snaaake3
Messages postés
2
Date d'inscription
jeudi 23 décembre 2004
Statut
Membre
Dernière intervention
29 mai 2005
-
Bonjour,

Je suis un peu nouveau, mais pourrais-tu me donner un exemple d'utilisation de setDelay().
Je voudrais appeler une fonction qui va mettre en pause un flux video au bout d'une certaine durée que j'ai.
A l'appui d'un bouton, je voudrais lancer setDelay, qui executera ma fonction de pause de flux video au bout d'un temps que je précise.

Pourrais tu m'expliquer comment faire ca?

Merci d'avance

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.