我以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/