JeuWeb - Crée ton jeu par navigateur

Version complète : [étape 2] RPG tactique isométrique -> déplacement du joueur
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Pages : 1 2 3 4
je supose que l'on est en js la
c'est parce que ta fonction est interompu par la suivante
il faut retarder la suivante
Code :
function deplacer_enligne(id,x2,y2)
{
    img = document.getElementById(id);

    // on récupere la valeur du margin left de l'image
    var margin_Left = img.style.marginLeft;
    // le probleme c'est qu'elle renvoie pas un nombre mais du texte sous forme "42px", donc on va recupérer les chiffre et virer les px avec la fonction split de javascript (qui permet de diviser une phrase) dans un tableau (parce que la fonction split renvoie un tableau)
    var tab = margin_Left.split("px");
    // et maintenant on récupere la vraie valeur qui se trouve dans notre tableau
    margin_Left = parseInt(tab[0]); // dans le cas présent il renvoie 10
    // la fonction parseInt est obligatoire pour que l'addition ensuite addition deux nombre sinon il va les concaténer

    var margin_Top = img.style.marginTop;
    tab = margin_Top.split("px");
    margin_Top = parseInt(tab[0]);

    if(Math.abs(margin_Left - x2)>12)
    {
        if(margin_Left < x2) margin_Left = margin_Left+10;
        else margin_Left = margin_Left-10;
        img.style.marginLeft = margin_Left+'px';// on met à jour le style de l'image pour le "téléporter"
   }

    if(Math.abs(margin_Top - y2)>7)
   {
        if(margin_Top < y2) margin_Top = margin_Top+5;
        else margin_Top = margin_Top -5;
        img.style.marginTop = margin_Top+'px';// on met à jour le style de l'image pour le "téléporter"
   }
        
    if(margin_Left != x2 || margin_Top != y2)
    {
        setTimeout('deplacer_enligne("'+id+'", '+x2+', '+y2+');', 25);
    }
}

Oui, voila mon code, ben j'ai essayé de retardé l'appel à ma seconde fonction, mais ça marche toujours pas. Donc le but c'est d'appeller 2 fois cette fonction

Code :
deplacer_enligne(id,0,0);
    deplacer_enligne(id,1000,0);

Si vous arrivez à faire déplacer le perso correctement, je vous donne une glace 57
je ne sais pas comment tu retarde l'apelle de ta focntion
moi jte conseille d'utiliser settimeout pour ca
Oui, c'est avec settimeout que j'avais essayé... Mais ça marchait pas. Bon je vais me repencher sur le problème... Je vous dis si j'y arrive...
moi jle fai avec setimout ... mais je trouve encore bourin
j'envisage de rentrer dans les entraille de jquery poru voir comment ils font eux pour une telle fluidite

je vous tiens au courant
Pour de la fluidité, il faut simplement éviter le calcul pour rien.

Par exemple, dans les fonctions, on voit que vous cherchez les coordonnées d'éléments alors que ces derniers ne changent pas. La solution est d'utiliser des variables globales : c'est à dire que vous créez une bonne fois pour toute sur la page un tableau Javascript global qui contient toutes les informations régulièrement utilisées.
Vos fonction iront alors chercher dans ce tableau les informations (à l'aide de l'id de la case) : vous économisez du temps de calcul, et donc améliorez la fluidité.

Bien sur, il faut le faire intelligemment en limitant le calcul des choses qui reviennent souvent. Comment souvent, il ne faut pas abuser des bonnes choses. Bien sur l'autre alternative à global est de créer un objet duquel le tableau contenant la mine d'information sera un attribut.


Sephi-Chan
Ca y est, j'ai réussi 2

Voir ici

Le résultat est plutôt sympa 60
Yop !

Vraiment bien ces 2 tutos, cela m'aide beaucoup.

Merci et vivement le 3e 2
Bonjour,

Je trouve le script de déplacement intéressant et fonctionnant bien.
Personnellement j'aurais besoin de m'en servir pour déplacer une image, cependant il faudrait que je connaisse les coordonnées de l'image dans la page lorsque l'image a été déplacé afin de pouvoir les récupérer.
Y'a-t-il moyen, par exemple, de les récupérer dans la value deux petits input de texte ?

Merci par avance de votre aide.
C'est vrai que c'est joli. Cependant sur FF, j'ai un petit décalage de l'image. J'imagine que le personnage devrait être centré.

Bonne journée à vous.
Kéké.
Pages : 1 2 3 4
URLs de référence