begin process at 2012 02 04 13:42:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

MX2004: CLASS

 > RETARDER L'EXECUTION D'UNE FONCTION

RETARDER L'EXECUTION D'UNE FONCTION


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :MX2004: CLASS Niveau :Initié Date de création :20/03/2005 Date de mise à jour :05/06/2005 00:33:35 Vu / téléchargé :7 978 / 672

Auteur : SuperDevy

Ecrire un message privé
Site perso
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 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

  • /**
  • * 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);
  • }
  • }
/** 
 * 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.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

20 mars 2005 14:43:20 :
Ajout d'un exemple d'utilisation : Une fonction reccursive de dessin.
21 mars 2005 18:53:01 :
Un exemple plus jolis, c'est tout.
24 mars 2005 18:19:26 :
Amélioration de la classe : fonction clearAllIntervals ajoutée.
05 juin 2005 00:33:35 :
Nouvelle classe plus simple d'emploi (une seule fonction)

 Sources du même auteur

Source avec Zip TREE AVEC RECHERCHE POUR AFFICHER UN XML.
Source avec Zip COMPOSANTS POUR NON-PROGAMMEUR
Source avec Zip VOITURE INTELLIGENTE :: OPTIMISATION DE TRAJECTOIRE
Source avec Zip Source avec une capture BONNE TENUE DE ROUTE POUR CES VOITURES.
FONCTIONS MATHEMATIQUES

 Sources de la même categorie

Source avec Zip Source avec une capture LECTEUR MP3 AVEC LISTE DE LECTURE, STREAMING OU NON (COMPOSA... par eron
Source avec Zip ENREGISTRER DANS UN FICHIER TEXTE AVEC L'AIDE D'UN EXE par Mr_Qqn
Source avec Zip Source avec une capture CLASSE CALCULATOR par BananaTree
Source avec Zip Source avec une capture CLASS "PATERN" : PERMET LA CRÉATION DE REMPLISSAGE DE MOTIF ... par top30
Source avec Zip Source avec une capture MA CLASSE DE BASE SUR LES TEXTES ( STRINGS ) par snakeeater1

Commentaires et avis

Commentaire de SuperDevy le 20/03/2005 14:48:59

J'ai ajouté un exemple pour que vous puissiez comprendre le mode d'utilisation.

J'attends vos commentaires ....
N'hésitez pas à demander si vous ne comprennez pas !

Commentaire de nicoptere le 23/03/2005 08:21:54

salut,
bravo, encore un code nickel (mais comment fait il) et fort pratique qui plus est.

continues de nous faire rever

Commentaire de stown le 11/04/2005 16:31:41

SuperDevy je compren pas a quoi sa sers... si c'est a retarder l'execution d'une fonction, pourquoi ne pas le faire simplement comme sa: ???

objet_int = setInterval(function () { code....
clearInterval(_root.objet_int)
}, 200);

et si tu veu savoir combien de fois il a passé a l'interieur

nb_fois = 5
nb_test = 0
objet_int = setInterval(function () {
               nb_test ++
               if (nb_test == nb_fois){
               clearInterval(_root.objet_int)
               } else {
               code....
               }
}, 200);


........

Commentaire de SuperDevy le 11/04/2005 17:17:21

C'est bien stown, tu as tout compris au mode de fonctionnement (sans ironie). Ce que tu écris marche tout à fait correctement mais se révèle très limité si tu as plusieurs executions à retarder. As-tu regardé mon exemple ?

En effet, ma méthode est un peut lourde, mais c'est pour qu'elle puisse s'adapter à toutes les circonstances.

Commentaire de snaaake3 le 27/05/2005 14:11:17

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

Commentaire de SuperDevy le 29/05/2005 01:09:29

Tu devrais trouver réponse à ton problème ici :
http://wiki.media-box.net/classes/flash/com/superdevy/utils/delay

Commentaire de snaaake3 le 29/05/2005 09:38:20

Salut SuperDevy,
Ca marche Nikel, Merci merci beaucoup, tu m'enlèves une sacrée épine du pied
Au plaisir
snaaake3

Commentaire de SuperDevy le 05/06/2005 00:36:13

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

Commentaire de diverman le 24/01/2007 18:12:46

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

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,265 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales