ralecul
Messages postés111Date d'inscriptiondimanche 23 mars 2003StatutMembreDernière intervention 1 août 2008
-
16 sept. 2006 à 00:48
ralecul
Messages postés111Date d'inscriptiondimanche 23 mars 2003StatutMembreDernière intervention 1 août 2008
-
16 sept. 2006 à 10:22
Bonjour,
Je suis en train de réécrire mon système de panorama
(dispo ici)
en version POO. Mais la, je bute sur un problème avec SetInterval et l'appel à une méthode membre d'un objet. Je m'explique : je n'arrive pas à récupérer la valeur de this.decalage dans la méthode this.increase (alias TestClass_Increase). J'ai trouvé une solution proposée sur le forum mais elle utilise une variable globale qui empêche donc des éxécutions multiples au sein de la même page. Si vous appuyez sur les 2 bouttons start le deuxième arrête le premier... Donc j'aimerais savoir si il est possible de faire autrement ?
/* Test Class */
function TestClass_init()
{
this.addDebug(' Init : decalage = '+this.decalage);
}
function TestClass_start()
{
//solution trouvée sur le forum, proposé par bultez
quoi = this;//mais ne permet pas des éxécutions multiples
quoi.actif = setInterval(function(){quoi.increase();}, 200);
//this.actif = setInterval(this.increase, 200); // ne trouve pas les variables menbres dans this.increase
//this.actif = setInterval('this.increase()', 200); // ne marche pas
}
cs_bultez
Messages postés13616Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 16 sept. 2006 à 07:56
une erreur de ma part ( faute d'inattention) !
il suffit de mettre une variable locale !
var quoi = this;//mais ne permet pas des éxécutions multiples
<hr />
cordialement Bul mon Site=Bul M'écrire<hr />
ralecul
Messages postés111Date d'inscriptiondimanche 23 mars 2003StatutMembreDernière intervention 1 août 2008 16 sept. 2006 à 10:22
Merci beaucoup !
Effectivement ça marche beaucoup mieux avec une variable locale (pourquoi j'y ai pas pensé ?), je vais donc pouvoir continuer la migration de ma source en poo !
PS: pour ceux qui veulent tester ce petit bout de code, j'ai visiblement rajouté une erreur lors de la colorisation syntaxique : functionTestClass_Increase() ->function TestClass_Increase() (il manque un espace entre function et TestClass_Increase).