Problème de setInterval qui ne se clear pas.

Signaler
Messages postés
1
Date d'inscription
dimanche 2 juillet 2006
Statut
Membre
Dernière intervention
22 mai 2012
-
Bonjour a tous je développe actuellement une petite fonction javascript qui sert a déplacer une map 2D en Xajax.

Cette fonction sert a déplacer la map en fonction du drag and drop de la souris.

Sur le onmousedown d'une case de la map j’appelle une fonction (clicmouse) qui appelle a son tour une fonction (trackmap)

La fonction trackmap récupère la position de départ de la souris et la transmet en parametre a une autre fonction(depmap) au travers d'un setInterval.

Ensuite sur le onmouseup de la souris sur la case de la map j’appelle la fonction (stopdepmap) qui doit clear l'intervalle précédent et arrêter le déplacement de la carte.

Cette fonction est bien appeler mais elle n'arrete pas mon setInterval :(

function positionX(event){
var x = event.clientX;
return x;
}
function positionY(event){
var y = event.clientY;
return y;
}

function clicmouse(move,action,Id){

trackmap();
if(move == 0){
document.getElementById("map").style.cursor='default';
// Code d'action:
// 1: Inaccesible (réservé)
// 2: Neutre
// 3: Ma base
// 4: Mon terrain
// 5: Base ennemie
// 6: Ennemie attaquable
// 7: Ennemie protégé

if(action > 0){
switch(action){
case 1:

break;
case 2:
alert("Terrain neutre "+Id);
break;
case 3:

break;
case 4:

break;
case 5:
alert("Mon terrain");
break;
case 6:

break;
case 7:

break;
}
}
}
}
var timemap = null;
function trackmap(){

var x = positionX(event);
var y = positionY(event);

//Position du div 
var left = 0;
var top = 0;
/*On récupère l'élément*/
var e = document.getElementById("map");
/*Tant que l'on a un élément parent*/
while (e.offsetParent != undefined && e.offsetParent != null)
{
/*On ajoute la position de l'élément parent*/
left += e.offsetLeft + (e.clientLeft != null ? e.clientLeft : 0);
top += e.offsetTop + (e.clientTop != null ? e.clientTop : 0);
e = e.offsetParent;
}
//
mondiv = document.getElementById("map");
macase = document.getElementById("case");
var xdep  = x - left;
var ydep = y - top;

timemap = setInterval("depmap("+xdep+","+ydep+")","1000");
}
function stopdepmap(){
alert(timemap);
clearInterval(timemap);
timemap = null;
}

function depmap(xdep,ydep){
var xfin = 0;
var yfin = 0;
//Position du div 
var left = 0;
var top = 0;
/*On récupère l'élément*/
var e = document.getElementById("map");
/*Tant que l'on a un élément parent*/
while (e.offsetParent != undefined && e.offsetParent != null)
{
/*On ajoute la position de l'élément parent*/
left += e.offsetLeft + (e.clientLeft != null ? e.clientLeft : 0);
top += e.offsetTop + (e.clientTop != null ? e.clientTop : 0);
e = e.offsetParent;
}
//
document.getElementById("map").style.cursor='pointer';
var event = document.getElementById("map");
x = positionX(event);
y = positionY(event);
xfin  = x - left;
yfin = y - top;

document.getElementById("map").style.cursor='pointer';
document.getElementById('case').style.display='none';

//alert(xdep+','+ydep+','+xfin+','+yfin);

xajax_mapmove(xdep,ydep,xfin,yfin);
}


Merci d'avance si vous pouvez me venir en aide ;)