Javascript 跟随鼠标位置的对象速度减慢

Javascript 跟随鼠标位置的对象速度减慢,javascript,jquery,math,Javascript,Jquery,Math,我有几个div缓慢地跟随鼠标位置。刚开始的时候,它启动得很好,但越靠近鼠标位置,速度就越慢。下面我有一个非常有效的代码,但我想改进它,使div始终以恒定的速度跟随鼠标,而不是改变速度 var xp = x, yp = y; var loop = setInterval(function(){ xp += ((mouseX - xp) ) / 100; yp += ((mouseY - yp)) / 100; object.css({left:xp, top:yp}); },20);} 因为当它

我有几个div缓慢地跟随鼠标位置。刚开始的时候,它启动得很好,但越靠近鼠标位置,速度就越慢。下面我有一个非常有效的代码,但我想改进它,使div始终以恒定的速度跟随鼠标,而不是改变速度

var xp = x, yp = y;
var loop = setInterval(function(){
xp += ((mouseX - xp) ) / 100;
yp += ((mouseY - yp)) / 100;
object.css({left:xp, top:yp});
},20);}

因为当它接近时,它会将它跳水100分,所以数学会变小,导致X/Y移动变慢。我希望它保持相同的速度,无论它来自何处。

您尝试过使用Web workers吗

使用web worker,您可以在后台线程中发送“繁重”的任务来完成,这样您的UI线程就不会变得迟钝,您的web应用程序也会保持响应

它的设置非常简单

var worker = new Worker('someWorker.js');
看看:

以下是解决方案:

var loop = setInterval(
    function()
    {
        speed = 20;
        xp += (mouseX - xp)>speed ? speed : ((mouseX - xp)<-speed ? -speed : (mouseX - xp));
        yp += (mouseY - yp)>speed ? speed : ((mouseY - yp)<-speed ? -speed : (mouseY - yp));
        object.css({left:xp, top:yp});
    },20
);
var loop=setInterval(
函数()
{
速度=20;

xp+=(mouseX-xp)>速度?速度:((mouseX-xp)速度?速度:((mouseY-yp)你想让div看起来像是附在鼠标上的,还是你对尾巴一样的行为更感兴趣?类似这样的回答:@Cory是的,我对尾巴一样的延迟行为感兴趣。例如,你移动鼠标,div跟随,大约需要2秒左右才能到达鼠标位置。上面的代码是但随着它越来越近,它会变得越来越慢,我只想让它保持它的速度。这些浏览器在所有浏览器中都可用吗?如果有的话,这很有趣are@BryanMoylesChrome 3+、Firefox 3.5+、IE 10+、Opera 10.6+、Safari 4+——在链接的底部,Chrome、Firefox和Safari会提示用户更新,99%的用户都在更新版本,所以这些都很好。(加起来,这三者占浏览器市场的85%左右)。我对Opera了解不多,IE还不受支持,因为大多数IE用户都在IE8和IE9上。@Ozzy Chrome/FF/Safari占浏览器市场的85%吗?不知道这些数据是从哪里来的。IE仍然徘徊在50%左右(,)@Ozzy plus WebWorkers只适用于非UI工作负载很重的情况,例如计算密集型任务。如果您正在更新DOM,例如拖动DIV,那么您必须在主线程上完成大部分工作。而且拖动元素也没有那么密集。这几乎起到了作用,但没有那么顺利作为原始代码。在原始代码中,div将以平滑的方式跟随,而在这一版本中,div的Y位置在其大于mousey时移动。当然,
(mouseX xp)
可能是负数。我编辑了解决方案。