2010-08-12 127 views
1

我有我的对象使用onmousemove事件跟踪鼠标。但我想让它顺利。我确信这在jQuery中并不困难,但我没有找到任何非常好的资源。jQuery平滑鼠标跟踪

我的一个想法是简单地使用动画功能并计算我想要移动的偏移量。然后,如果鼠标在动画完成之前再次移动,我将使用停止功能停止动画。我会重新计算我的目的地,然后我又走了。这似乎有点黑客,我也想象它会有点生涩。我相信必须有更好的方法。有任何想法吗?

编辑
对不起,我没有让我的问题很清楚。我有实时跟踪鼠标的对象,以便它的移动与我的鼠标完全相同。问题在于我希望它能够流畅并落后于下面提到的Andy Lin等加速效果。我只是有点失落如何实际执行此操作。

+0

我不明白。 – 2010-08-12 13:10:44

+0

现在发生了什么,你不想要?你想成为什么“顺利”,你是什么意思? – lincolnk 2010-08-12 13:12:52

回答

1

恐怕没有比动画更好的方法了。如果你添加一个平滑函数,那么你只需要做与动画相同的事情。当然,不要排列你的动画或他们看起来很奇怪。我得到了不错的结果:

var obj = $('<div style="width:50px;height:50px;background:red;position:absolute"></div>'); 

obj.appendTo(document.body); 

$(document).bind('mousemove',function(ev){ 
obj.animate({top:ev.pageY,left:ev.pageX},{queue:false,duration:200,easing:'linear'})}); 
+0

看起来它会非常接近我所寻找的! – Icode4food 2010-08-12 13:31:40

+0

你错过了什么? – Baju 2010-08-12 14:41:15

+0

我唯一缺少的就是尝试一下,弄清楚什么行不通! – Icode4food 2010-08-12 14:55:34

1

当你使用onmousemove时,你不需要让对象在每次调用时改变它的行为。

例如你可以添加一个定时器来说,在一段时间内,对象不会响应鼠标移动,并且会按照它的原始路径,并在超时或鼠标移动停止时,根据目的地移动。

此外,您可以使用动画设置模拟加速和减速效果。

+0

你在这里与我正在寻找的权利。你给了我一些想法,但我不太清楚实现。 – Icode4food 2010-08-12 13:25:41