21-03-2008, 03:08 PM
(Modification du message : 08-09-2008, 07:11 PM par Sephi-Chan.)
Pour une fois que je m'attaque a une 'nouvelle' technologie, je patauge un peu. J'arrive sans probleme a recharger un bout de page...
Je vous expose mon problème :
j'aimerais déplacer mon terrain (j'y arrive, là n'est pas le problème), et ensuite afficher le nouveau terrain (j'arrive aussi a l'afficher)... le coeur du problème est d'afficher la nouvelle portion de terrain lorsque le terrain à fini de bouger. (afin d'éviter les "téléportation" de case en case, j'aimerais avoir un mouvement fluide)
Je vous colle ici le javascript qui pose problème (je me sert de "prototype" pour comme framework javascript)
Je vous expose mon problème :
j'aimerais déplacer mon terrain (j'y arrive, là n'est pas le problème), et ensuite afficher le nouveau terrain (j'arrive aussi a l'afficher)... le coeur du problème est d'afficher la nouvelle portion de terrain lorsque le terrain à fini de bouger. (afin d'éviter les "téléportation" de case en case, j'aimerais avoir un mouvement fluide)
Je vous colle ici le javascript qui pose problème (je me sert de "prototype" pour comme framework javascript)
Code PHP :
<?php
<!--
function deplace(dir){
//toutes les cases a déplacer
var id_case=new Array("div03","div12","div21","...");
//je relance a fonction après 25 milliseconde
var id=setTimeout("deplace('"+dir+"');",25);
for(var cur_case in id_case){
if($(id_case[cur_case]) && $(id_case[cur_case]).style)
//ici je choisi dans quelle direction déplacer le terrain... en fonction de l'objet sur lequel j'ai cliqué (pour simplifier, je n'ai laissé qu'une direction)
switch(dir){
case 'h':
$(id_case[cur_case]).style.top=($(id_case[cur_case]).offsetTop+4)+"px";
//dès que je suis arrivé a destination, j'arrête le relancement de la fonction.
if(parseInt($("div21").offsetTop)>=88)clearTimeout(id);
break;
}
}
}
function deplacement(e){
var objId=this.id||e.srcElement.id;
switch(objId){
case'a23':deplace('h');break;
default:
}
//je change de page après 1 seconde (j'aimerais qu'il ne le fasse qu'une fois que le déplacement est terminé)
setTimeout("load_page($('"+objId+"').alt);",1000);
//ignore le href="..."
if( e && e.stopPropagation && e.preventDefault ){
e.stopPropagation();
e.preventDefault();
}
else if(e && window.event ){
window.event.cancelBubble=true;
window.event.returnValue=false;
}
return false;
}
//-->
Si quelqu'un a un début de piste...