如何检测鼠标何时停止

汉宁顿曼波

我已经编写了以下JavaScript代码。我正在使用它来检测鼠标何时移动以及何时停止。MouseStopped()函数是一个包含数百个项目的循环,它将告诉我鼠标在哪里停止,因此我只想在鼠标停止时调用它。

var CheckMovement;
var stopLoop = false;
var n = 0;
canvas.addEventListener('mousemove', function (evt) {
    CheckMovement = setInterval(function () { HasMouseStopped(evt) }, 250);
}, false)

function HasMouseStopped(evt) {
    var mousePos = getMousePos(canvas, evt);
    newMouseX = mousePos.x;
    newMouseY = mousePos.y;
        if ((newMouseX !== mouseX) && (newMouseY !== mouseY)) {

            stopLoop = true;
        } else {
            //stopped moving
            clearInterval(CheckMovement);
            stopLoop = false;
            n = 0;
            MouseStopped();
        }
        mouseX = newMouseX;
        mouseY = mousePos.y;
}

function MouseStopped() {
    while (arr.length > n) {
        if (stopLoop) { break; }
        if (ctx.isPointInPath(mouseX, mouseY)) {
            //tooltip text
            ctx.font = '12pt Candara';
            ctx.fillStyle = 'black';
            ctx.fillText(arr[n], mouseX + 10, mouseY - 5);
            break;
        }
        n++;
    }
}

现在我有以下问题:

  1. 即使我在打电话clearInterval(CheckMovement),它也不会停止迭代;它连续运行,从而导致MouseStopped()多次调用的问题为什么不停止?
  2. MouseStopped()如果要在完成循环之前移动鼠标,我想在它的操作过程中进行介绍。这就是我要设置的原因,stopLoop = true;但是,这似乎也没有按预期工作。如何实现这些目标?

谢谢。

编辑

罗比·维克兹(Robbie Wxyz)

这非常简单:移动鼠标时,请将超时设置为XXX毫秒。另外,清除所有过去的超时以重置时间。像在mousemove监听器中这样

clearTimeout(timer);
timer=setTimeout(mouseStopped,300);

看到这个JSFiddle

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何检测 SCNNode 何时停止移动?

来自分类Dev

检测AvPlayer何时停止

来自分类Dev

如何检测鼠标(指针)何时位于JList中的文本上方?

来自分类Dev

MouseHook检测鼠标何时移动

来自分类Dev

确定鼠标何时停止移动

来自分类Dev

检测ScrollViewer何时停止滚动

来自分类Dev

如何检测按下的鼠标何时进入其他框架中的小部件

来自分类Dev

如何检测何时按下鼠标 1 按钮然后运行 bash 脚本?

来自分类Dev

检测用户何时停止触摸UIButton

来自分类Dev

检测用户何时停止触摸屏幕

来自分类Dev

Azure管道如何在脚本等待用户输入时检测管道何时停止

来自分类Dev

如何检测何时savehtml失败?

来自分类Dev

如何检测何时加载内容?

来自分类Dev

如何检测何时收到通知

来自分类Dev

如何检测何时savehtml失败?

来自分类Dev

如何检测何时删除文本

来自分类Dev

如果我没有点击元素,如何停止检测鼠标离开

来自分类Dev

JavaScript,检测鼠标光标何时不在任何元素上

来自分类Dev

如何检测鼠标中键单击?

来自分类Dev

如何检测鼠标中键单击?

来自分类Dev

Javafx,如何检测鼠标位置?

来自分类Dev

如何正确检测鼠标右键?

来自分类Dev

如何检测鼠标中键单击?

来自分类Dev

管道如何知道何时停止

来自分类Dev

如何停止<Alt>禁用鼠标?

来自分类Dev

如何检测控制台应用程序何时被C#中的计划任务停止?

来自分类Dev

Azure触发的Webjob-检测Webjob何时停止

来自分类Dev

检测何时到达水平div的末端,然后停止

来自分类Dev

检测用户何时停止写入 EditText 以保存内容