我正在开发一个项目,其中我有一个 while() 循环充当事件监听器。 OnEvent 我需要重置 html 视频中的 .currentTime。
问题是,该事件是由运动传感器触发的,只要激活该传感器,就应该将视频设置为当前播放时间。由于运动传感器始终在监听并在检测到运动时始终发出警报,因此我的视频也陷入此循环,在触发事件监听器时不断重置,而不是播放其完整部分。我似乎想不出解决这个问题的方法。
由于此时我的代码相当长,因此我将仅包含事件监听器和触发器函数。
感谢任何帮助!
function processWV() {
var startTime = +new Date(),
changed = false,
f;
context.drawImage(video, 0, 0, canvas.width, canvas.height);
f = detectf();
if (experimentType === MASK_EXPERIMENT) {
drawMasks(f);
} else {
highlightf(f);
}
//console.log(+new Date() - startTime);
setTimeout(processWV, 25);
}
function listening(f) {
if (f == false) {
section = 2;
updateVideo();
return false;
} else {
section = 1;
}
for (var i = 0; i < f.length; i++) {
var f = f[i];
context.fillRect(f.x, f.y, f.width, f.height);
}
}
function updateVideo(){
console.log('update');
$("#video")[0].currentTime = 14;
}
最佳答案
您需要为触发函数提供额外的参数,以确保它退出第 2 部分的开头。
如果它正在循环,它可能只是被一遍又一遍地调用到同一位置。你应该做的是这样说:
if(section==2 && video.currentTime < whatever_section_1_end_time_is){
set to section 2;
}
希望这是有道理的。
关于javascript - JS - Motion Detect EventTrigger 持续触发功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22799363/