[SVG] Problème de récursion
Bonjour,
Voilà, je suis en train de coder un jeu dans lequel on a un carré qui se déplace.
Comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| function env_ennemis(nb)
{
var rnd = RandomNum(1, 4);
var x;
var y;
var en = SVGDocument.createElementNS(svgns, 'rect');
if(rnd == 1)
{
x = 0;
y = RandomNum(0, 500);
}
else if(rnd == 2)
{
x = 500;
y = RandomNum(0, 500);
}
else if(rnd == 3)
{
y = 0;
x = RandomNum(0, 500);
}
else if(rnd == 4)
{
y = 500;
x = RandomNum(0, 500);
}
en.setAttributeNS(null, 'id', 'ennemi_' + nb);
en.setAttributeNS(null, 'x', x);
en.setAttributeNS(null, 'y', y);
en.setAttributeNS(null, 'width', '20');
en.setAttributeNS(null, 'height', '20');
en.setAttributeNS(null, 'fill', 'blue');
en.setAttributeNS(null, 'stroke', 'black');
en.setAttributeNS(null, 'stroke-width', '2px');
SVGRoot.appendChild(en);
deplace_en(en, parseInt(x), parseInt(y));
window.setTimeout(function(){env_ennemis(nb+1)}, 1000);
}; |
L'idée de l'appel récursif à la fin de la fonction, c'est que toutes les secondes, un nouvel ennemi fasse son apparition et se déplace comme les autres, à l'aide de la fonction deplace_en, elle-même récursive.
Or, ce n'est pas du tout ce qui se passe en pratique.
Toutes les secondes, l'ancien élément disparait, et le suivant se déplace 2 fois plus rapidement que le précédent ! Comme si la fonction deplace_en était appeler 2 fois, puis 3 fois, etc. à chaque déplacement.
Quelqu'un peut m'aider ?
J'ai déjà du mal à comprendre cet histoire de vitesse, mais alors pourquoi mon objet disparait à chaque récursion, je n'y comprends strictement rien ! Surtout que j'ai d'autres fonctions qui fonctionnent selon le même principe de création par récursion et qui marchent parfaitement... :?
Merci d'avance :)