如何使用纯javascript获得10毫秒的旧鼠标位置?

时间:2016-05-16 10:02:03

标签: javascript html css delay setinterval

我正在制作一个滑块,当它向左滑动时向左移动,向右滑动时向右移动。她是我迄今取得的成就https://jsfiddle.net/6ze720f7/。虽然我现在可以设置左侧位置:左侧显示时为0,左侧位置为左侧:显示右侧时为446像素。

负责方向的代码是:

center.onmousemove = function(Dmove) {
if (Dmove.pageX < oldx) {
    direction = "left"
} else if (Dmove.pageX > oldx) {
    direction = "right"
}

oldx = Dmove.pageX;
}

我担心的是oldxDmove.pageX之间的差异非常小,更准确地说是执行几行javascript代码所花费的时间。因此,如果将div向左滑动1秒钟,但最后将其向右移动,错误地移动几毫秒,然后div将向右滑动。我认为解决方案是使用10ms较早的oldx值。

  • 是否有可能找到比Dmove.pageX现有的10毫秒旧值?
  • 是否可以在声明oldx = Dmove.pageX;后提供同步延迟10毫秒?
  • 是否可以使用setInterval()函数,以便在每10秒后设置值oldx?这可能有点问题,因为当oldx事件发生时,Dmove.pageXmouseup的当前值之间的差异可能在0到10毫秒之间。

1 个答案:

答案 0 :(得分:0)

我建议(如果适用于您的情况)采用另一种方法:比较滑动开始时的x位置(即:拖动开始或mosedown事件),以及结束时或期间的x位置滑动(即:mouseup或mousemove事件)。这给出了:

document.body.onmousedown = function(Dmove) { 
    oldx = Dmove.pageX;
    ...
    ...
}

请勿在其他地方修改oldx,并与onmousedownonmouseup事件监听器中的“初始”值进行比较。