我正在制作一个滑块,当它向左滑动时向左移动,向右滑动时向右滑动。她是我迄今为止取得的成绩https://jsfiddle.net/6ze720f7/。尽管我现在可以将左侧的位置设置为左侧:显示左侧时为0,位置为左侧时:显示右侧时为446像素。如何用纯JavaScript获得10毫秒的旧鼠标位置?
,是以方向护理的代码是:
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
将被刷到右边。我认为的解决方案是使用旧版本的10年前的oldx
。
- 是否有可能找到10毫秒的旧值比目前的
Dmove.pageX
? - 是否可以给同步延迟10毫秒之后的语句
oldx = Dmove.pageX;
? - 是否可以使用
setInterval()
函数以便在每10秒钟后设置值oldx
?这可能有点问题,因为oldx
与当前值Dmove.pageX
之间的差异可以在事件发生时在0到10毫秒之间取任何值。
'10ms'是一个非常短的时间。但是,例如,您可以在每次鼠标移动后设置一个“10ms”超时,以更新“oldx”。使用这个方法你会每秒创建100个超时,这在性能方面并不是很好。再次,'10ms'是一个很短的时间,我认为你至少应该把它增加到'50ms'。 – Cristy
另一种选择是将所有鼠标位置及其时间戳保存在队列中。每当队列中的第一个项目超过10毫秒时,就从队列中弹出。在队列末尾添加新项目。要找到10ms前发生的位置,只需读取队列中的第一个值。 – Cristy
@Cristy在每个mousmove事件之后不会设置10ms超时会导致'div'移动的模糊效果? – user31782