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"
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.
Tant qu'on vie, faisons ce que nous pouvons et faisons le bien!
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
});
Tant qu'on vie, faisons ce que nous pouvons et faisons le bien!
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
Tant qu'on vie, faisons ce que nous pouvons et faisons le bien!
si c'est ok, met resolu et n'oublie pas le petit pouce !
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.
Développeur web et mobile
https://kipdev.io
Développeur web et mobile
https://kipdev.io
Développeur web et mobile
https://kipdev.io
Développeur web et mobile
https://kipdev.io