Je voudrais qu'une image se déplace vers la gauche si la souris est à gauche de l'écran et vers la droite si la souris est à droite de l'écran, en utilisant JavaScript, voici le code que j'ai jusqu'à présent :
var dirx = 0;
var spdx = 35;
var imgLeftInt;
var imgTopInt;
var imgHeight;
var imgWidth;
var divWidth;
var divHeight;
var t;
var tempX;
var tempY;
Je suis donc assez sûr de ne manquer aucune variable...
function animBall(on) {
imgLeftInt = parseInt(document.images['logo'].style.left);
imgTopInt = parseInt(document.images['logo'].style.top);
imgHeight = parseInt(document.images['logo'].height);
imgWidth = parseInt(document.images['logo'].width);
divWidth = parseInt(document.images['container'].width);
if (tempX > 779){
dirx = 1;
}
else if(tempX < 767){
dirx = 2;
}
else {
spdx = 0;
}
Donc si tempX, qui devrait être la coordonnée x de la position de la souris, est supérieur à 779, qui est le point milieu de la balise div, l'image devrait aller à droite. S'il est inférieur à cela, il devrait aller à gauche, et sinon, la vitesse devrait être nulle, c'est-à-dire qu'il devrait rester immobile.
if(dirx == 1){
goRight();
} else if(dirx == 2) {
goLeft();
}
}
function getMouseXY(e) {
tempX = e.clientX;
tempY = e.clientY;
}
J'ai trouvé des centaines de façons différentes d'obtenir la position de la souris, mais cela venait du W3C donc je suppose que cela fonctionne.
function goRight() {
document.images['logo'].style.left = imgLeftInt+spdx +"px";
if (imgLeftInt > (divWidth-imgWidth)){
dirx = 2;
spdx= 20;
}
}
function goLeft() {
document.images['logo'].style.left = (imgLeftInt-spdx) +"px";
if (imgLeftInt < 5){
dirx = 1;
spdx= 20;
}
}
Voilà tout mon script.
Commencer l'animation Arrêter l'animation
J'ai laissé la dépendance à l'emplacement de la souris à la toute fin pour que le script d'animation fonctionne bien (ou du moins fonctionnait, sauf si j'ai cassé quelque chose en essayant de lui faire lire l'emplacement de la souris).
Des idées sur ce que je fais mal ?
Si cela peut aider, j'ai hébergé le code ici.