每100ms更新一次鼠标Y坐标

时间:2011-10-07 15:16:12

标签: jquery mouse coordinates

我正在尝试将鼠标Y坐标保存到变量startPosition只有.mousemove处于活动状态时每100毫秒,而鼠标按钮被保持(mousedown),我的代码是为我工作,我认为这是错的?有人可以帮我解决这个问题吗?

    $(document).mousemove( function (e) {
        gesturesY = parseInt(e.pageY, 10);
        startPosition = setInterval(gesturesY, 100);
    });

修改 我想这可能是一个全新的问题?对不起任何混淆,下面是对我混乱的问题的澄清。 我们走了:

http://jsfiddle.net/nicktheandroid/PCgFK/1/

这个JSfiddle允许您抓取滚动框中的页面并将其向上或向下翻转,就像触摸屏手机一样。现在,如果您抓住页面(在滚动框区域中)并向上移动鼠标(导致页面向下滚动),然后释放鼠标按钮,速度将启动,它将跳转页面一点。当你真正抓住页面并向上或向下轻弹以滚动页面时,就会出现这种情况,这会让它变得缓慢而稳定。如果这个人没有轻弹,而是只是拖动页面,然后保持鼠标稳定并释放鼠标按钮,它会跳起来,就像我上面说的那样。当人抓住并拖动页面时,我试图摆脱跳跃,然后当鼠标静止时,释放鼠标按钮。

我认为通过每100毫秒左右更新startPosition,它会消除跳跃,但仍然可以通过向上或向下轻拂页面来减慢速度。我已经非常接近完成了这项工作,但我仍然存在问题。其他人帮助我添加了速度,在脚本中有一个名为velocityCheckWait的变量,我认为这与我想要的相反。

对于任何混淆感到抱歉,感谢任何能够有时间帮助我的人。

2 个答案:

答案 0 :(得分:5)

没有什么可以真正做你想要的;模拟这个的最好方法是下面的代码:

var currentPosition = 0;

$(document).mousemove(function (e) {
    currentPosition = e.pageX;
});

setInterval(function () {
    startPosition = currentPosition;
}, 100);

这会不断更新鼠标位置,但只会将其更新为每100ms所需的变量(与此同时,它会更新其他变量currentPosition

如果由于性能上的担忧,你只想每100毫秒更新一次这个位置,首先,我会仔细检查你现在是不是低估了计算机的强大功能。但是,如果它是有效的问题,则以下代码将对您有所帮助:

var startPosition = 0;

$(document).mousemove(function (e) {
    startPosition = e.pageX;
});

setInterval(function () {
    // read in startPosition and do your **intensive** task here.
}, 100);

在这里,startPosition一直在更新,但你只是每100毫秒执行一次。

答案 1 :(得分:0)

您需要将鼠标移动事件中的位置存储在变量中,并且每隔100ms将该值放入另一个变量中:

var mouseY;
$(document).mousemove(function(e) {
    mouseY = e.pagey;
});

var startPosition;
setInterval(function() {
    startPosition = mouseY;
}, 100);

您的示例显示对基本JavaScript缺乏了解。如果您不理解我的例子,请在评论中提问,我将很乐意解释。