我以x / y坐标流的形式获取输入,并且如果这些坐标在给定的时间段内(例如2秒)落在指定范围内,我想触发一个事件。有人可以建议一种方法吗?

最佳答案

从算法上讲,当您第一次检测到它在范围内时,请执行setTimeout() 2秒钟。从那时起,如果坐标停留在边界内并且计时器已设置,则您什么也不做。如果坐标超出范围,请使用clearTimeout()停止计时器。如果计时器在您清除计时器之前触发,则说明坐标已停留在所需时间范围内。

这是一个代码示例:

var myTimer = null;

function processCoordinatePair(x,y) {
    if (inBounds(x,y)) {
        if (!myTimer) {
            setTimeout(function() {
                // we stayed in bounds for 2 seconds, do whatever needs doing
                myTimer = null;         // clear timer for future use
            }, 2000);
        }
    } else {                            // not in bounds any more
        if (myTimer) {
            clearTimeout(mytimer);      // if timer was running, stop it
            myTimer = null;
        }
    }
}


inBounds()函数的实现显然取决于您,因为您没有描述问题的那一部分。

关于javascript - javascript定时事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6990902/

10-11 10:53