J'ai un petit jeu trivial que j'ai écrit en javascript qui crée une vague d'où vous cliquez. J'ai trouvé deux façons de faire bouger la "vague" à travers l'écran:appeler setTimeout arrête à nouveau la première instance
- en appelant jQuery.animate() avec des temps de plus en plus grands. Par l'appel récursif setTimeout
- . demo
Le problème était que je veux le comportement de deux (colonnes croissent toutes à la même vitesse avec un décalage de synchronisation) mais avec l'action d'une (clic subséquent des composés des « ondes » formées).
Dès maintenant sur la deuxième démo, si vous cliquez à nouveau avant que la "vague" ne soit terminée, elle efface immédiatement setTimeouts et les recommence à zéro. Je veux pouvoir les empiler comme dans le premier exemple.
Vous pouvez afficher la source de l'une de ces pages pour voir le code (les méthodes getMouseXYUp et getMouseXYDown).
l'essence de base de ce que je fais dans la deuxième démo se trouve dans ces deux fonctions:
function getMouseXYUp(e) {
$("body").die('mousemove');
h = (document.height - e.pageY + 17);
left = id-1;
right = id+1;
setTimeout("moveleft()", 100);
setTimeout("moveright()", 100);
return true
}
function moveleft(){
if (left >= 0){
$("#div"+left).animate({'height': h}, 400);
left--;
setTimeout("moveleft()", 50);
}
}