Probleme enchainement de fonction

loicseg Messages postés 168 Date d'inscription dimanche 26 février 2006 Statut Membre Dernière intervention 30 septembre 2011 - 1 août 2010 à 00:27
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 5 août 2010 à 16:54
Bonjour, voilà j'aimerai se faire enchainer plusieurs actions a la suite, dont voici le code :
<SCRIPT>
function move(){
var igrec=window.event.offsetY
var ixe=window.event.offsetX
document.getElementById('sim').style.top=igrec-100+'px';
document.getElementById('sim').style.left=ixe-100+'px';
setTimeout("move2()",1000);
}
function move2(){
var igrec=window.event.offsetY
var ixe=window.event.offsetX
document.getElementById('sim').style.top=igrec-50+'px';
document.getElementById('sim').style.left=ixe-50+'px';
setTimeout("move3()",2000);
}
function move3(){
var igrec=window.event.offsetY
var ixe=window.event.offsetX
document.getElementById('sim').style.top=igrec+'px';
document.getElementById('sim').style.left=ixe+'px';
}
</SCRIPT>



mais cela ne fonctionne pas,
cela provient certainement du settimeout car quand je met juste la fonction suivante cela fonctionne sans probleme sauf ke je nai pas l'effet de deplacement que je souhaite vu que c'est "instantané".
merci d'avance pour votre aide et a bientot

9 réponses

loicseg Messages postés 168 Date d'inscription dimanche 26 février 2006 Statut Membre Dernière intervention 30 septembre 2011
1 août 2010 à 00:30
ou alors existerai-til de faire un effet de deplacement comme dans un jeu vidéo tel que diablo 2 ?
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
1 août 2010 à 09:23
Bonjour,

La première fonction se déclenche sur un click, d'où le window.event.offsetY est bel est bien défini

La deuxième fonction, appelée par un setTimeout ne génère pas de window.event.offsetY donc cela plante

Définies bien ce que tu veux faire avant de continuer, je ne l'ai pas saisi, mais bon il est vrai que j'ai souvent l'esprit embrumé...

... oublies ces fonctions qui ne sont compatibles qu'IExplorer à cause de window.event

;O)
0
loicseg Messages postés 168 Date d'inscription dimanche 26 février 2006 Statut Membre Dernière intervention 30 septembre 2011
2 août 2010 à 00:58
je ne vois pas comment résoudre le probleme d'enchainement de fonction, j'ai meme essayé avec setinterval.
Ce que je voudrais faire en fait c'est un deplacement de personnage (une image donc) qui se deplacerai là ou le joueur (curseur de la souris) aura cliqué. mais ceci ne doit pas etre instantanée, on doit pouvoir voir le personnage se déplacer.
0
loicseg Messages postés 168 Date d'inscription dimanche 26 février 2006 Statut Membre Dernière intervention 30 septembre 2011
2 août 2010 à 01:19
voici un code d'un ancien topic sur ce même site

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>exemple</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>

************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO

OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO

OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO

OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO

OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO
OO

************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************

    
    
<script type="text/javascript">
    var isIE =  !!(window.attachEvent && !window.opera) ? true : false;
    
    function getWindowDimensions(){
        var width = document.documentElement['clientWidth'];
        var height = document.documentElement['clientHeight'];
        return {width: width, height: height};
    }
    
    function addEvent(elt, eEvent, fCallBack){
        isIE ? elt.attachEvent('on'+eEvent, fCallBack) : elt.addEventListener(eEvent, fCallBack, false);
    }
    
    function centerView(event){
        var cursorPosition = {
            x: event.pageX || (event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)),
            y: event.pageY || (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop))
        }
        document.getElementById('pointer').style.left = cursorPosition.x-4+'px';
        document.getElementById('pointer').style.top = cursorPosition.y-4+'px';
        document.getElementById('pointer').style.display = 'block';
        window.scrollTo(cursorPosition.x-(getWindowDimensions().width/2), cursorPosition.y-(getWindowDimensions().height/2));
    }
    
    addEvent(document, 'click', centerView);
</script>

</html>


ce code est ce que je veux faire mais seulement le probleme est que le deplacement est instantanée comme pour le precedent code, la page est centrée, c'est deja ca.

je t'invite a regarder une video de diablo 2 sur youtube pour voir ce que je veux faire si tu ne capte toujours pas
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
2 août 2010 à 08:54
Bonjour,
sur le click :
- tu récupères la position du click qui est la position à atteindre
- tu récupères la position du personnage qui est la position actuelle
- tu déplaces le personnage en X et en Y jusqu'à ce qu'il atteigne la position du click

source pouvant t'aider DIV QUI SUIT LE SCROLLING DE LA PAGE


;O)
0
loicseg Messages postés 168 Date d'inscription dimanche 26 février 2006 Statut Membre Dernière intervention 30 septembre 2011
4 août 2010 à 23:03
Merci pour ton aide mais j'ai du mal à voir comment faire un mélange des deux scripts pour arriver à mes fins...
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
5 août 2010 à 10:13
Bonjour,
...comment faire un mélange des deux scripts...
Il ne faut pas mélanger les deux scripts mais prendre ce dont tu as besoin dans chacun.

Pour le principe il te suffit de déclencher le mouvement uniquement lorsque tu cliques avec la souris et non sur le scroll de la page...

;O)
0
loicseg Messages postés 168 Date d'inscription dimanche 26 février 2006 Statut Membre Dernière intervention 30 septembre 2011
5 août 2010 à 15:25
Heu... oui d'accord mais... je ne vois vraiment pas comment faire...
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
5 août 2010 à 16:54
Une bonne technique est de tracer ce que l'on veut obtenir comme résultat quitte à faire un dessin, on arrive mieux à voir ce dont on à besoin

sur le click appel de la fonction SartMove
c'est dans cette fonction que l'on va procéder aux initialisations
- PosX_Deb = position Left de l'objet
- PosY_Deb = position Top de l'objet
- PosX_Fin = position en X du click Mouse, position X à atteindre
- PosY_Fin = position en Y du click Mouse, position Y à atteindre
- Inc_X = vitesse de déplacement suivant l'horizontale
- Inc_Y = vitesse de déplacement suivant la verticale

ensuite on appelle la fonction de déplacement MoveObjet
dans celle ci on récupère la position de l'objet à déplacer
- on calcul la prochaine position
- on compare par rapport à la position d'arrivée
SI pas encore atteint
- on déplace
- on rapelle la fonction
SINON
- on déplace en position finale
FIN SI

voila en gros !
;O)
0
Rejoignez-nous