TourDeJeu, le réseau des jeux en ligne alternatifs : jeux web multijoueurs, jeux par forum. En savoir +

Flux RSS des discussions du forum : pour les joueurs, et pour les créateurs et MJ
  Reply to this topicStart new topicStart Poll

> Système D'inventaire
trididinus
Ecrit le : Samedi 28 Juillet 2007 à 00h01
Quote Post


Newbie
*

Groupe : Membre
Messages : 5


Je suis en train de réaliser moi aussi mon jeu et je suis tombé sur un léger problème de convenance entre firefox et internet explorer.

Je voudrais réaliser l'inventaire de mon jeu à coté de l'image du personnage. Le joueur pourrait alors déplacer un objet de son inventaire (à l'aide de la souris) et le poser sur son perso pour que l'objet soit équipé (système de drag and drop)

Tout fonctionne bien sous Firefox mais pas sur internet explorer évidement. Seulement je ne comprend pas pourquoi car j'ai fait la différence entre les deux.

Voici le code permettant l'ouverture du fichier qui doit changer l'image :

CODE

<div id="perso"><img id="perso" src="<? echo $image; ?>" /></div>
               <script type="text/javascript">Droppables.add('perso', {onDrop:
               function(element){
               var id_objet = encodeURIComponent(element.id)
                   if(id_objet != '') {
                       if(texte = file('equiper_objet.php?idobjet='+id_objet))
                       {
                           if(texte == 'Objet inexistant')
                           {
                               writediv('Cet objet n\'existe pas.');
                           }
                           else if(texte == 'Non appartenance')
                           {
                               writediv('Cet objet ne vous appartient pas.');
                           }
                           else if(texte == 'deja porte')
                           {
                               writediv('Vous portez déjà cet objet.');
                           }
                           else if(texte == 'objetnonportable')
                           {
                               writediv('L\'objet ne peut pas être mis sur le personnage.');
                           }
                           else
                           {
                               
                               document.getElementById("reponse").style.visibility="hidden";
                               var nouvelleimage = texte;
                               var persoemplacement = document.getElementById("perso");
                               persoemplacement.setAttribute("src", nouvelleimage);
                           
                           }
                       }
                   }
                   else { writediv('L\'id de l\'objet n\'est pas rentré.'); }
               }
               })</script>


Le fichier est ouverte grace à la fonction "file()" et le résultat est obtenu par la suite.

Voici la fonction file() :

CODE

function file(fichier)
   {
   if(window.XMLHttpRequest) // FIREFOX
        xhr_object = new XMLHttpRequest();
   else if(window.ActiveXObject) // IE
        xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
   else
        return(false);
   xhr_object.open("GET", fichier, false);
   xhr_object.send(null);
   if(xhr_object.readyState == 4) return(xhr_object.responseText);
   else return(false);
   }


Je répete, il fonction très bien sous firefox! Mais ne veut pas change l'image sous IE.

Si vous pouvez m'aider, ce serait chouette.

[Edit] J'ajoute un bout de script. C'est ce qui enclenche la fonction lorsque que l'on pose l'image de l'objet sur l'image du perso. Je ne suis pas trop sur que je puisse fire comme cela. Si je ne peux pas, dites-moi comment faire svp. Il se peut que le problème vienne de là... Firefox est plus tolérant que IE.

CODE
<script type="text/javascript">new Draggable('<? echo $sql_item['id']; ?>', {revert:true})</script>
PMEmail Poster
Top
Haiken
Ecrit le : Samedi 28 Juillet 2007 à 23h15
Quote Post


Ouf
*

Groupe : Membre
Messages : 360


tu utilises une librairie javascript particulière ?


--------------------
PMEmail Poster
Top
trididinus
Ecrit le : Dimanche 29 Juillet 2007 à 00h34
Quote Post


Newbie
*

Groupe : Membre
Messages : 5


http://script.aculo.us/

C'est une librairie très efficace en ce qui concerne le Drag and Drop.
Et je l'ai adapté pour faire ce que je désirais. Mais je ne suis pas sûr de l'avoir adapté correctement.

Sauriez-vous me dire comme je peux transmettre un id obtenu par php, dans une fonction JS?

Je l'ai fait comme ceci, comme je l'ai montré précédement, mais ca ne marche que sous firefox. Je pense que le problème vient de là.

CODE
<script type="text/javascript">new Draggable('<? echo $sql_item['id']; ?>', {revert:true})</script>


Merci d'avance.
PMEmail Poster
Top
butch2k
Ecrit le : Dimanche 29 Juillet 2007 à 10h18
Quote Post


Kid
*

Groupe : Membre
Messages : 20


Si c'est rééllement le code c'est pas trop etonnant whistling.gif

Avec le <?php ça marchera certainement mieux

CODE
<script type="text/javascript">new Draggable('<?php echo $sql_item['id']; ?>', {revert:true})</script>
wink.gif
PMEmail Poster
Top
trididinus
Ecrit le : Dimanche 29 Juillet 2007 à 12h06
Quote Post


Newbie
*

Groupe : Membre
Messages : 5


Hé bien non...

Ca ne marche pas mieux...
Ce n'était donc pas aussi facile que ca...
PMEmail Poster
Top
butch2k
Ecrit le : Dimanche 29 Juillet 2007 à 16h58
Quote Post


Kid
*

Groupe : Membre
Messages : 20


Tu as des erreur JS sous IE ?

Compare le code de la page sur les deux browsers pour voir si il y a une différence, vois aussi si les ID sont correctement placés sur les différents élément de ta page.

Après c'est peut-être le getElementById qui n'arrive pas à récupérer l'element ou bien il y a deux elements sur la page avec le même id, etc...

Quelle version de scriptaculous utilises tu ?
PMEmail Poster
Top
trididinus
Ecrit le : Dimanche 29 Juillet 2007 à 17h04
Quote Post


Newbie
*

Groupe : Membre
Messages : 5


J'utilise la derniere version en date. Celle que l'on peut toujours télécharger maintenant.

Il n'y a aucune erreur sur la page sous IE. Et j'ai verifié la source, il affiche corectement l'id dans ce que je croyais qui ne fonctionnait pas. Donc ce n'est pas celà qui ne marche pas.

On dirait plutot qu'il ne le récupere pas ou bien qu'il n'ouvre pas le fichier.

Et il n'y a aucune différence entre la source des deux navigateurs.
PMEmail Poster
Top
LoK
Ecrit le : Dimanche 29 Juillet 2007 à 17h29
Quote Post


Ouf
*

Groupe : Membre
Messages : 210


Tu utilises quelle version d'IE pour tes tests ?
PMEmail PosterUsers Website
Top
butch2k
Ecrit le : Dimanche 29 Juillet 2007 à 17h31
Quote Post


Kid
*

Groupe : Membre
Messages : 20


ok c'est tres certainement IE qui ne le trouve pas avec le getElementById

As tu utilisé des attributs "name" qui auraient la même valeur que des attributs "id" mais sur des tags differents ?

IE et opera te renvoient le premier tag dont le name ou l'id correspond a ce que tu recherche via un GetElementById, FF lui ne prend en compte (correctement) que l'ID.

Pas évident à débugger sans voir le code en action, tu n'as pas un lien ?
PMEmail Poster
Top
trididinus
Ecrit le : Dimanche 29 Juillet 2007 à 19h31
Quote Post


Newbie
*

Groupe : Membre
Messages : 5


Merci. Le problème venait effectivement du div et de la balise img auxquels j'avais donné le même id. J'ai modifié l'id du div et depuis cela fonctionne sous IE (version 6)

CODE
<div id="persoim"><img id="perso" src="<? echo $image; ?>" /></div>


Voici le lien vers mon script et merci de votre aide!

http://deleener.ovh.org/seiryoku/inventaire3.php
PMEmail Poster
Top
« Sujets + anciens | Programmer | Sujets + récents »

Reply to this topicStart new topicStart Poll