JeuWeb (JeuPHP) - Crée ton jeu par navigateur

Version complète : [Résolu][Javascript] Fonction jQuery css et boucle for
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Pages : 1 2 3 4
Bonjour,

Actuellement je code une fonction de pathfinding pour mon jeu. La fonction marche bien comme il le faut et me retourne un tableau contenant les positions [x,y]. Jusque la rien de bien méchant. Le problème vient du mouvement du personnage. J'utilise une boucle for pour lire les positions du tableau et pour chaque coordonnées je bouge mon personnage avec le fonction animate de jquery et je change sa valeur z-index avec la fonction css. Le problème est la. La boucle for n'attend pas que les deux fonctions soient terminées. J'ai trouvé un astuce pour la fonction animate ({queue:true}) mais pas pour css. Regardez une portion de mon code et la démo pour mieux voir le problème.

Code :
var way = AStar(map,[char_x,char_y],[x,y],'Manhattan');
for(var x, y, i = 1, j = way.length; i < j; i++) {
    x = way[i][0];
    y = way[i][1];

    var zindex = map_width + x + y + 50;
    var left = (x-y)*option.tuileleft + (map_height-1)*option.tuileleft + 7 + option.mapOffsetLeft;
    var top = (x+y)*option.tuiletop - map[y][x]['1']*option.tuilelevel - 18 + option.mapOffsetTop;

    $('#player').css(
        "zIndex",zindex
    ).animate({
        top: top,
        left: left
    }, 200, {queue:true});
}

Amicalement
Je ne comprends pas le problème en utilisant la démo.
Ta bouger le personnage? Tu n'a pas remarqué que le personnage se trouve parfois sous la tuile. Tout ceci provient du z-index.

Amicalement
Sans voir le problème de la démo, je te dirais de ne pas utiliser une boucle for.
D'avoir une fonction que tu appels qui déplaces ton perso, zIndex et animation comprise, puis lorsque l'évènement animation est terminée (je suppose que tu as un moyen avec jQuery d'appeler une fonction quand c'est le cas) tu rappels ta fonction en lui disant de regarder la case suivante de ton tableau.

Bien sûr à un moment il n'y a plus de case suivante, donc tu es arrivé à destination.
Je vais voir celà. Merci oxman.
N'utilisant pas JQuey, je peux pas t'aider.

Mais j'ai remarquer que ce problème arrivait quand on "remonte".
Exactement. Le joueur obtient le zindex de la tuile de destination et comme le zindex des tuiles du bas étant plus petit, le personnage devient caché en remontant.

Même en contournant la boucle for, j'ai le même résultat.

-_-
Donne voir ton nouveau code.
En simplifiant j'ai utilisé la fonction $.each() de jQuery a la place de la boucle for.

Code :
var way = AStar(map,[char_x,char_y],[x,y],'Manhattan');
$.each(way, function(index, pos) {
    var x = pos[0];
    var y = pos[1];

    var zindex = map_width + x + y + 50;
    var left = (x-y)*option.tuileleft + (map_height-1)*option.tuileleft + 7 + option.mapOffsetLeft;
    var top = (x+y)*option.tuiletop - map[y][x]['1']*option.tuilelevel - 18 + option.mapOffsetTop;

    $('#player').css(
        "zIndex",zindex
    ).animate({
        top: top,
        left: left
    }, 200);
}
C'est donc normal que ça ne marche toujours pas, tu n'as pas du tout fait ce que je t'ai dit 2
Pages : 1 2 3 4
URLs de référence