我正在制作一个滑块,向左滑动时将向左移动,向右滑动时将向右移动。到目前为止,她是我所达到的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;
}
我担心的是
oldx
和Dmove.pageX
之间的差异非常小,更确切地说,是执行几行JavaScript代码所花费的时间。因此,如果div
向左滑动1秒钟,但最后将其错误地向右移动了几毫秒,则div
将向右滑动。我认为的解决方案是使用oldx
的10ms旧值。是否可以找到比
Dmove.pageX
当前值早10毫秒的值?在语句
oldx = Dmove.pageX;
之后是否可以提供10毫秒的同步延迟?是否可以使用
setInterval()
函数,以便每10秒设置一次oldx
值?这可能会引起一些问题,因为当发生oldx
事件时,Dmove.pageX
和mouseup
的当前值之间的差可以取0到10ms之间的任何值。 最佳答案
我建议(如果适用于您的情况)采用另一种方法:比较滑动开始时的x位置(即,拖动开始或mosedown事件的开始)和滑动结束时或滑动期间的x位置(即:mouseup或mousemove事件)。这使:
document.body.onmousedown = function(Dmove) {
oldx = Dmove.pageX;
...
...
}
不要在其他地方修改
oldx
并将其与onmousedown
或onmouseup
事件侦听器中的“初始”值进行比较。关于javascript - 如何使用纯Javascript获取10毫秒的旧鼠标位置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37251276/