JeuWeb - Crée ton jeu par navigateur
[Reglé]Chargement d'une carte - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Reglé]Chargement d'une carte (/showthread.php?tid=2248)

Pages : 1 2


[Reglé]Chargement d'une carte - trididinus - 05-01-2008

J'ai créé il y a peu une carte dont les déplacements se font en javascript, sans rechargement de la carte. Le problème est que si le joueur ne bouge pas, la map n'est de toute facon pas rechargée (et donc le joueur ne voit pas les autres joueurs se déplacer...).

Je voudrais, grâve au javascript, recharger la carte toutes les X millisecondes. A priori pas de problème, mais je trouve ca extremement lourd au niveau des données de recharger la carte complete avec tous les joueurs dessus.

J'ai déjà vu une méthode de comparaison avec les anciennes données (dans un Tchat en Ajax je pense), mais je ne vois pas trop comment réaliser ca chez moi.

Peut-être quelqu'un a-t-il de l'expérience dans ce genre de système et pourrai m'aider, ce serait gentil Smile

Merci


RE: Chargement d'une carte - Sephi-Chan - 05-01-2008

Si tu veux recharger seulement quand les données auront changé, il faudra bien que tu fasses ta requête pour voir si ça a effectivement changé ! Smile

Je suppose que tu avais l'intention d'utiliser Ajax pour ne recharger que la carte. Je pense que l'économie est déjà de taille. Dans tous les cas, si tu veux des informations à jour, il faut les recharger. Je ne pense donc pas qu'il soit possible d'y couper, quelle que soit la technique utilisée.


Sephi-Chan


RE: Chargement d'une carte - trididinus - 05-01-2008

Moui...

C'est vrai que de toute facon, je dois charger entièrement la carte pour pouvoir la comparer. La carte étant composée principalement d'image, générer toutes ces images plusieures fois de suite devraient prendre quelques ressources.
Mais est-ce que le gain de ressources gagné par l'application d'un script comparatif ne serait pas perdu justement par ce script??

Je n'aime pas utiliser une bibliothèque existante en Ajax, donc je travaille en javascript en me rapprochant beaucoup des idées d'Ajax.


RE: Chargement d'une carte - Sephi-Chan - 05-01-2008

Pour les images, je pense que si elles sont en cache sur le navigateur client, elle ne sont pas rechargées.

Peux-tu nous montrer le bout de code grâce auquel tu recharges uniquement ta carte ?


Sephi-Chan


RE: Chargement d'une carte - trididinus - 05-01-2008

Je viens de créer ce petit script et il ne marche malheureusement pas...

Code PHP :
<?php 
function init()
{
//lancement du rechargement toutes les demi-secondes
setInterval("chargement()", 1000);
}

function
getXhr()
{
var
xhrcarte; // On crée la variable xhr

if (window.XMLHttpRequest) // Pour Firefox, Safaro, etc?
xhrcarte = new XMLHttpRequest();
else if (
window.ActiveXObject) // Pour IE
xhrcarte = new ActiveXObject('Microsoft.XMLHTTP');

return
xhrcarte;
}

function
chargement()
{
var
xhrcarte;
xhrcarte = getXhr();
xhrcarte.open("POST","map.php",true);
xhrcarte.onreadystatechange = function() {
if(
xhrcarte.readyState == 4 && xhrcarte.status == 200)
{
document.getElementById('map').innerHTML = xhrcarte.responseText;
}
}
xhrcarte.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xhr.send();
}

Voici les fonction javascript. La fonction init() est chargé à partir de la balise body :
Code PHP :
<?php 
<body onload="init()">

et la carte devrait être remplacée dans le tableau "map". Ce remplacement fonctionne pour les déplacement. Mais ne fonctionne pas au rechargement.


RE: Chargement d'une carte - Sephi-Chan - 05-01-2008

Et quel est le message d'erreur renvoyé par Javascript ?


RE: Chargement d'une carte - trididinus - 05-01-2008

Aucun message d'erreur, il ne recharge tout simplement pas la carte.

Je suis en train de modifier un peu l'ensemble des pages permettant la génération de la carte, car c'est un peu le fouillis...
Je vous informerais des resultats^^

[Edit] J'ai modifié la fonction init() en mettant un alert dedans... et elle ne s'est pas affichée. Je présume donc que la fonctione ne se lance pas au chargement de la page comme je le voudrais.


RE: Chargement d'une carte - nemesis_elite - 05-01-2008

Salut Smile

La map se charge au moins une fois, au départ ?
Si c'est le cas, alors cela ne se recharge pas car tu as oublié de rappeler la fonction init().

Il suffit de rappeler cette fonction à la fin de la fonction chargement

NemeSiS_eliTe


RE: Chargement d'une carte - trididinus - 05-01-2008

Non j'ai rendu tout ca propre et elle ne s'affiche plus au départ.

Avant elle s'affichait car j'appellait la page de génération de crte avant le body... Maintenant, la page ne veut tout simplement pas appeler une fonction avec "onload".

Code PHP :
<?php 
<body onload="init()">

[Edit]

Je commence à trouver certaines choses bizarres...
Quand j'ouvre ma page map.js contenant mes fonctions javascript, il n'affiche pas la moitié de mes fonctions. La fonction init() n'y est d'ailleurs pas. Soit mon FTP me fait une crise soit Firefox a des propriétés que je ne connais pas.


RE: Chargement d'une carte - nemesis_elite - 05-01-2008

et si tu met directement ce code :
Code PHP :
<?php 
<body onload="chargement()">
avec la fonction ci-dessous :
Code PHP :
<?php 
function chargement()
{
var
xhrcarte;
xhrcarte = getXhr();
xhrcarte.open("POST","map.php",true);
xhrcarte.onreadystatechange = function() {
if(
xhrcarte.readyState == 4 && xhrcarte.status == 200)
{
document.getElementById('map').innerHTML = xhrcarte.responseText;
}
}
xhrcarte.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xhr.send();
init();
}