如果鼠标在屏幕左侧,我希望图像向左移动,如果鼠标在屏幕右侧,则图像向右移动,使用javascript,这是我到目前为止的代码:
var dirx = 0;
var spdx = 35;
var imgLeftInt;
var imgTopInt;
var imgHeight;
var imgWidth;
var divWidth;
var divHeight;
var t;
var tempX;
var tempY;
所以我很确定我没有遗漏任何变量......
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;
}
因此,如果 tempX(应该是鼠标位置的 x 坐标)大于 779(即 div 标签的中点),则图像应该向右。如果小于这个值,它应该向左走,否则,速度应该为零,因为它应该保持静止。
if(dirx == 1){
goRight();
} else if(dirx == 2) {
goLeft();
}
}
function getMouseXY(e) {
tempX = e.clientX;
tempY = e.clientY;
}
我找到了数百种不同的方法来获取鼠标位置,但这不是 W3C 的,所以我认为它有效。
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;
}
}
</script>
这就是我的整个剧本。
<div id="container" onmousemove="getMouseXY(event);" width="1546" height="423">
<a href="javascript:var t=setInterval('animBall()', 80)">Start Animation</a> <a href="javascript:clearInterval(t);">Stop Animation</a> <br />
<img src="http://qabila.tv/images/logo_old.png" style="position:absolute;left:10px;top:20px;" id="logo" />
</div>
我把对鼠标位置的依赖留在了最后,所以动画脚本可以正常工作(或者至少可以工作,除非我破坏了一些东西试图让它读取鼠标位置)。
任何想法我做错了什么?
如果有任何帮助,我已经在这里托管了代码。