Partage
  • Partager sur Facebook
  • Partager sur Twitter

Vérifier qu'une variable éxiste

Sujet résolu
    8 octobre 2015 à 9:02:12



    Bonjour, 

    J'ai une question toute bête que je n'arrive pas à résoudre.


      <a href="javascript:change_cursor(42);"><img src="images/isometrie/armurerie.png" alt="" width="64" height="64" /></a>
    
    
    </div>
    <div id="carte">
    	
    <script type="text/JavaScript">
    <!--
    var ppmap;
    
    function carte() {
    	ppmap = $('#ppISO').pp3Diso({
    		map:'<?php echo $map; ?>',		// la map
    		mapId:1,				// id de la map
    		nbrTitleSetsSlide:100,		// pas de mouvement de la map lorsque l'on click dessus
    		tx:160,					// dimension x des tuiles
    		ty:120,				// dimension y des tuiles
    		prefix:'isometrie/tuiles/map-',
    		auto_size:false,
    		mousewheel:true,
    		onmoveavatar:function(x, y, id) {
    			myClick(x, y, id);
    		}
    	});
    	ppmap.moveMapOn();
    	ppmap.cursor('images/cursor-on.png', 'images/cursor-off.png', 0, 0);
    
    var zoom = 0.5;	
    }
    
    
    var Choix = 0;
    var objets = new Array();
    var objetsDecX = new Array();
    var objetsDecY = new Array();
    
    
    
    
    objets[1] = 'armurerie.png';
    objetsDecX[1] = 0;
    objetsDecY[1] = 0;
    
    
    
    
    function change_cursor(n) {
    	if(IsNumeric(objets[n])) {
    		ppmap.changeCursor('images/isometrie/tuiles/map-' + objets[n] + '.png', 'images/cursor-off.png', objetsDecX[n], objetsDecY[n]);
    	}else{
    		ppmap.changeCursor('images/isometrie/' + objets[n], 'images/cursor-off.png', objetsDecX[n], objetsDecY[n]);
    	}
    	Choix = n;
    }
    
    function myClick(x, y, id) {
    	switch(Choix) {
    
    case 2:
    
    
    
    			ppmap.changeOneMap(x, y, objets[Choix]);
    			break;
    case 1:
    
    
    			ppmap.addObject(x, y, 'images/isometrie/' + objets[Choix], objetsDecX[Choix], objetsDecY[Choix]);
    			break;
    	}
    }




    Donc en fait à chaque fois que je clique sur le batiment "armurerie", cela va rajouter "ppmap.addObject(x, y, 'images/isometrie/' + objets[Choix], objetsDecX[Choix], objetsDecY[Choix]);" comment je peux vérifier que la fonction est déjà existante et donc lancer une autre fonction "moveObject" ? 

    Si on ajoute un autre batiment ca met bien la fonction addObject mais si on ajoute le même batiment "moveobject" 

    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter

    Développeur web et mobile
    https://kipdev.io

      8 octobre 2015 à 21:00:57

      Salut,

      Est ce une fonction dont il faut verifier l'existance ou l'objet. a mon humble avis, c'est mieux de verifier si ton objet existe déja (instance), alors tu execute une autre fonction

      Ou encore tu peux verifier si le type d'objet (ici batiment) est déja ajouter, alors tu lance la fonction que tu veux.

      • Partager sur Facebook
      • Partager sur Twitter
      Tant qu'on vie, faisons ce que nous pouvons et faisons le bien!
        8 octobre 2015 à 22:02:48

        Salut, Oui voilà c'est ça, c'est de vérifier si l'objet existe et d’exécuter une autre fonction, mais je ne sais pas comment faire ^^
        • Partager sur Facebook
        • Partager sur Twitter

        Développeur web et mobile
        https://kipdev.io

          9 octobre 2015 à 12:22:46

          deja donne des id specifique a tes objet quand tu les creer (peut etre une variable qui s'incremente à chaque fois que tu cree un objet et tu l'ajoute en fonction du type. par exepmle tu cree un batment et en javascript tu modefie son attribut id="bat"+objId) avec objId qui s'incremente (jusque une suggestion)

          Ensuite tu capture le onclick sur tout le document

          //variable globale
          var eltSelectId;
          //tableau d'objet
          var toolAssocArray={}; //tableau associatif
          var toolArray=new Array();
          //creation de tes objets
          ....
          var object=new Array();
          object["type"]="batiment";
          object["id"]=object["type"]+toolId;
          toolAssocArray[object["id"]]=object;
          toolArray.push(object);
          ....
          
          $(document).onclick(function(e){
            eltSelectId=$(e.target).attr("id");\
            var objSelected=toolAssocArray[eltSelectId];
            //to do
          });



          • Partager sur Facebook
          • Partager sur Twitter
          Tant qu'on vie, faisons ce que nous pouvons et faisons le bien!
            9 octobre 2015 à 18:43:32

            Salut, 

            J'ai bien compris le principe, du coup j'ai attribué un ID à chaque bâtiment comme tu me l'as suggéré, cependant je ne comprends pas 

            la fin de ton code , c'est 2 lignes là vont faire quoi exactement? 

              eltSelectId=$(e.target).attr("id");\
              var objSelected=toolAssocArray[eltSelectId];
              //to do
            
            • Partager sur Facebook
            • Partager sur Twitter

            Développeur web et mobile
            https://kipdev.io

              9 octobre 2015 à 21:41:50

              ces deux lignes  sont incomplete en fait. j'ai omis quelques chose.

               en fait, ce bout de code permet de recuperer un id losque tu click sur n'importe quel element de ton document.

              Maintenant le id peut ne pas etre definit, alors tu doit verifier si le eltSelected n'est pas undefined.

              Dans le cas ou le id existe, tu doit verifier si ce n'est pas un id qui fait partit de tes objets, alors verifie si toolAssocArray[eltSelectId] n'est pas undefnied.

              Enfin si tout est bon, tu recupere l'objet enregistré dans objSelected.ainsi tu a acces par cet objet a toutes les infos de l'objet.

              Et puisque l'objet existe, tu peut faire ce dont tu veux par rapport a cet objet ou ce type d'objet, puisque tu a le type par
              objSelected["type"]

              voila, donc y a des bouts de code a ajouter (les tests pour les undefined).

              Pour resumé le principe, je capture tous les cliques sur la page. Puis je filtre pour ne pas utiliser tous les elements de mon documents (les div, span, etc, meme s'il ont des id) mais uniquement ceux qui sont dans mon tableau. Ensuite je recupere l'objet de mon tableau par son id. et je fais tous les traiments additionnels.

               

              J'ai tenté d'expliqué, a toi de tenter de comprendre.

              Pour revenir a ton code, tu peux tenter de tirer partir de cette methode et de ta fonction myclick (sans forcement utiliser les switch)

              -
              Edité par sajreborn 9 octobre 2015 à 21:45:34

              • Partager sur Facebook
              • Partager sur Twitter
              Tant qu'on vie, faisons ce que nous pouvons et faisons le bien!
                10 octobre 2015 à 1:09:06

                Hop parfait, merci de ton aide! Je me suis servi de la fonction myclick ça fonctionne, deux trois réglages à faire et c'est niquel !

                merci :)

                • Partager sur Facebook
                • Partager sur Twitter

                Développeur web et mobile
                https://kipdev.io

                  10 octobre 2015 à 12:30:11

                  si c'est ok, met resolu et n'oublie pas le petit pouce !
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Tant qu'on vie, faisons ce que nous pouvons et faisons le bien!

                  Vérifier qu'une variable éxiste

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown