Pouvez vous m'expliquer ces 5 lignes de codes en JS - HTML/CSS - Programmation
Marsh Posté le 24-07-2005 à 13:26:28
[quotemsg=1158285,1,54005]http://fr.selfhtml.org/javascript/objets/images.htm#src
Salut,
La tu initialises les variables, je pense que t'es ok
var b = new Array();
b[0] = new Image(); b[0].src = "henri.gif";
b[1] = new Image(); b[1].src = "hilmar.gif";
b[2] = new Image(); b[2].src = "heiner.gif";
b[3] = new Image(); b[3].src = "hans.gif";
var i = 0;
La tu définis ta fonction
function Animation()
{
if(i > 3) i = 0;
document.images[0].src = b[i].src;
i = i + 1;
window.setTimeout("Animation()",1000);
}
La tu appelle la fonction que tu viens de définir(Animation())
window.setTimeout("Animation()",1000); <=====
En fait il n'y a pas 2 appels à window.setTimeout pasque le premier sert à la définiftion de la fonction, dans la boucle et le second il permet de lancer "vraiment" la fonction Animation que tu viens de définir.Ensuite le window.setTimeout("Animation()",1000) de la fonction il va rappeller cette même fonction récursivement et ça indéfiement.
mais ca doit afficher tout le temps la même image non?Ou ya un truc que j'ai pas compris.
Bye
Marsh Posté le 24-07-2005 à 13:38:54
ben la dernier ligne est le lancement de la fonction animation
et la ligne avant est comprise dans la definition de fonction, et la fonction est recursive, elle s'appelle elle même
Marsh Posté le 24-07-2005 à 15:12:15
merci les gars. Oui c'est vrai j'ai pas vraiment fais gaffe, y a besoin d'appeller la fonction sinon elle est ignorer. C'est comme en c/c++ ou il faut appeller la fonction à partir du main. Je pensais que les lignes étaient au fur et à mesure.
gandolfouille, en fait le but de la fonction et de faire défiller une série d'image toutes les secondes ssans faire appelle aux gif animées.
La dans mon exemple, oui en effet les affectations ne sont pas bien faites ....
Encore un grand merci pour m'avoir eclairer.
Marsh Posté le 24-07-2005 à 12:58:30
http://fr.selfhtml.org/javascript/ [...] es.htm#src
<script type="text/javascript">
<!--
var b = new Array();
b[0] = new Image(); b[0].src = "henri.gif";
b[1] = new Image(); b[1].src = "hilmar.gif";
b[2] = new Image(); b[2].src = "heiner.gif";
b[3] = new Image(); b[3].src = "hans.gif";
var i = 0;
function Animation()
{
if(i > 3) i = 0;
document.images[0].src = b[i].src;
i = i + 1;
window.setTimeout("Animation()",1000); <====
}
window.setTimeout("Animation()",1000); <=====
//-->
je ne comprends absolument pour pourquoi il y a 2 window.setTimeout("Animation()",1000);
normallement, pour moi le premier devrait suffire. Je m'explique,
- une fois que que i est incrémenté de 1,
- on attends 1 secondes,
- puis on lance la fonction animation. En fait elle se rapelle elle-meme, c'est un peu du recursif.
- Ensuite on vérifie que i n'est pas plus grand que 3, si ce n'est pas le cas, on réinitialise la variable i à 0. Au 2ème passage, c'est faut. i vaut 2
- Ensuite on affecte le 2ème element du tableau (b[2].src) à document.images[0].src
- On incremente de i de 1
- On attend 1 secondes et on relance la fonction animation ()
Bref pour moi c'est une boucle infinie, il n'y a pas besoin de 2ème fonction. Pourquoi en ont il mis une ?