JeuWeb - Crée ton jeu par navigateur
Probleme de réccurence JS - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Probleme de réccurence JS (/showthread.php?tid=525)



Probleme de réccurence JS - Wolvarian - 11-12-2006

Bonjour, je souhaiterai vous exposer mon problème et peut être pourriez vous m'aider à trouver une solution.

Je développe actuelement un jeu en PHP avec la technologie AJAX.

Dans une de mes page de gestion des batiments en construction, au chargement de la page un script appelé de manière asynchrone recupere le temps restant avant la fin de la construction et l'envoie en paramètre à une fonction JS qui décrémente un compteur (compteur utilisant le setTimeOut() JS).

des onglets sur le coté de la page permettent de changer la rubrique de gestion toujours de manière asynchrone. En changeant de rubrique la zone du compteur est elle aussi actualisée.

Là ou se situe le problème, c'est que comme le javascript continue à s'exécuter jusqu'a la fin de la fonction/boucle ou jusqu'a ce que le navigateur soit fermé, lorsque je change de rubrique la fonction de décrémentation du compteur se réinstancie et le compteur se décrémente deux fois plus vite, et ainsi de suite...

du fait de la modification asynchrone via ajax du div contenant la zone d'affichage du compteur, la page n'est pas rechargée et donc le script JS n'est pas réinitialisé, j'ai bien du mal à trouver une solution à mon problème.

si vous pouviez m'aider je vous en serait éternellement reconnaissant :respect:


RE: Probleme de réccurence JS - gtsoul - 11-12-2006

pourquoi faire un compteur de ce type en ajax ? tu te compliques la vie pour pas grand chose.
En php, tu cherche le temps restant dans ta bdd et tu appelles une fonction js qui décrémentera ce chiffre toute les secondes.
De cette manière tu seras sur de n'avoir qu'une seule instance, car les objets javascripts ne durent que pour une requete.

(j'ai un script tout fait si tu veux)

Ajax c'est joli, c'est beau, ca fait classe mais faut pas l'utiliser à toutes les sauces.


RE: Probleme de réccurence JS - Loetheri - 11-12-2006

Tu veux aller décrémenter toutes les secondes un champs dans ta Base de données ?

Crée une fonction qui prend comme argument le temps et seulement le temps, qui va gérer personnellement le décompte. Logiquement lorsque tu vas changer de page, tu n'as pas à recharger le code de décrémentation.


RE: Probleme de réccurence JS - gtsoul - 11-12-2006

heu mal exprimé,
ton décompte atteindra 0 à la date tttttttt; alors tu stocke tttttttt dans ta bdd.
Chargement de la page :
une fonction php calcule temps_restant = ttttttttt-time();
une fonction js décremente de temps_restant vers 0


RE: Probleme de réccurence JS - Raoull - 12-12-2006

Dans la section script, j'ai mis un modele de compte à rebours en JS utilisant ce principe.