我正在制作一个滑块,向左滑动时将向左移动,向右滑动时将向右移动。到目前为止,她是我所达到的https://jsfiddle.net/6ze720f7/。尽管我现在可以只将left位置设置为:显示left时为0,显示left时为446 px。

照顾方向的代码是:

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将向右滑动。我认为的解决方案是使用oldx的10ms旧值。


是否可以找到比Dmove.pageX当前值早10毫秒的值?
在语句oldx = Dmove.pageX;之后是否可以提供10毫秒的同步延迟?
是否可以使用setInterval()函数,以便每10秒设置一次oldx值?这可能会引起一些问题,因为当发生oldx事件时,Dmove.pageXmouseup的当前值之间的差可以取0到10ms之间的任何值。

最佳答案

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

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


不要在其他地方修改oldx并将其与onmousedownonmouseup事件侦听器中的“初始”值进行比较。

关于javascript - 如何使用纯Javascript获取10毫秒的旧鼠标位置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37251276/

10-10 19:49