我正在输入x / y coords的流,如果这些coords在给定的时间段(例如2秒)内落在指定的范围内,我想触发一个事件。有人可以建议一种方法吗?
答案 0 :(得分:2)
在算法上,当您第一次检测到它在范围内时,您执行setTimeout()
2秒钟。从那时起,如果coords停留在边界并且已经设置了计时器,则不执行任何操作。如果坐标超出范围,则使用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()
函数的实现显然取决于你,因为你没有描述问题的这一部分。