|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité de passage
![]() Inscription : décembre 2009 Messages : 13 ![]() |
Bonjour,
Pour une petite animation (imaginez des lumières qui s'allument aléatoirement), j'utilise plusieurs settimeout contenant des setinterval. Les setinterval appellent la fonction qui gère la variation de alpha. En faisant plusieurs appels successifs, ça fonctionne, voir le code ci-dessous. Code :
Seulement, si cette méthode fonctionne lorsqu'il n'y a pas beaucoup de lumières à gérer, au bout d'un moment, un boucle serait bien utile. Seulement, toutes mes tentatives restent infructueuses. J'ai bien pensé à utiliser quelque chose du genre Code :
mais dans ce cas, la variable m du for (mettons m<=5) va rester constante (m=6). Chose significative, si je fais un alert, pour chaque fonction de la variable m transmise, j'ai la bonne valeur qui s'affiche. Voir le code suivant : Code :
Merci. |
||||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 242 ![]() |
Donnes nous un exemple de code complet et le plus simple possible qui résume ton problème.
__________________
- Réalisations - Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical. |
|
|
00
|
|
|
#3 | ||||||||
|
Invité de passage
![]() Inscription : décembre 2009 Messages : 13 ![]() |
Je vais essayer d'expliquer autrement.
Le code suivant fonctionne parfaitement : Code :
J'ai plusieurs settimeout successifs. Ce que je souhaite, c'est faire une boucle qui va faire la répétition à ma place, de manière à ce que je n'aie plus qu'à faire varier m. Dès que j'essaye de créer une boucle for, plus rien ne fonctionne convenablement. Le code suivant ne fonctionne pas, car la viable m n'est pas transmise. Code :
J'ai donc essayé Code :
Mais ça ne fonctionne pas. Tel que le problème se manifeste, c'est comme s'il voulait bien gérer plusieurs settimeout successifs écrits "en dur" mais pas dans une boucle for. Mettons que je mette Code :
En gros, c'est comme si loadText était appelé une seule fois à la sortie de mytimer au lieu d'être appelé pour chaque valeur de m transmise... |
||||||||
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() danseur Inscription : août 2003 Messages : 2 667 ![]() |
salut
ton setInterval dans un setTimeout est en soi assez peu compréhensible! après, si tu veux une gestion indépendante de chaque timer, crée un nouvel objet "lumière" ou "je ne sais quoi" pour chaque partie de l'animation; mais pour aller plus loin, il nous manque une partie html (au moins);
__________________
On ne mord pas, on manifeste seulement notre tristesse face à des exposés de situations qui défient notre entendement binaire. |
|
|
00
|
|
|
#5 |
![]() ![]() Andry Aimé Inscription : septembre 2007 Messages : 5 128 ![]() |
Bonjour,
Une fonction récursive ne te convient pas? A+. |
|
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Inscription : décembre 2009 Messages : 13 ![]() |
Bonjour,
@javatwister Pour ce qui est du code html, la partie concernée est plus que basique, c'est tout simplement des div successifs, le seule aspect css à gérer dynamiquement, c'est une variation du alpha. En gros les cases s'allument et s'éteignent indépendamment les unes des autres, en continu. Code :
Le problème vient vraiment des settimeout dans une boucle. Je comprends bien que des setinterval dans des settimeout, c'est... spécial, mais pour répondre à @andry.aime, je ne vois pas trop comment procéder via une fonction récursive. Le truc c'est que ce sont des thread parallèles, ils ne doivent pas dépendre les uns des autres. En gros, les settimeout, c'est pour décaler l'allumage de chaque case et le setinterval sert à faire clignoter chaque case à un rythme précis (En monochrome, sans habillage particulier, ça peut fait penser à une barre de chargement). |
||
|
|
00
|
|
|
#7 | ||
![]() ![]() Andry Aimé Inscription : septembre 2007 Messages : 5 128 ![]() |
Code :
|
||
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() danseur Inscription : août 2003 Messages : 2 667 ![]() |
en fait, vu que for ne temporise pas, m est forcément à son maximum en un clin d'oeil...
__________________
On ne mord pas, on manifeste seulement notre tristesse face à des exposés de situations qui défient notre entendement binaire. |
|
|
00
|
|
|
#9 |
![]() ![]() Andry Aimé Inscription : septembre 2007 Messages : 5 128 ![]() |
|
|
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() Inscription : décembre 2009 Messages : 13 ![]() |
@andry.aime
@javatwister Cool, ça marche, ça y est. Merci pour la fonction récursive. J'ai dû modifier un peu le code proposé mais, maintenant, ça roule ^ ^. Avec la suggestion "créer un objet spécifique" (argh à force passer de l'anglais au français, j'allais écrire object.... ), ça m'a donné une idée. Et voilà le résultat :Code :
|
||
|
|
00
|
|
|
#11 | ||
|
Expert Confirmé
![]() danseur Inscription : août 2003 Messages : 2 667 ![]() |
cool
sinon, je venais de faire un exemple, au brouillon; pas le temps d'affiner, vais au boulot Code :
__________________
On ne mord pas, on manifeste seulement notre tristesse face à des exposés de situations qui défient notre entendement binaire. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com