我正在创建一个秒表,它会在听到拍手声后停下来。我的带有秒表对象的第一个函数应调用第二个函数draw
,并应留在该函数中,并持续监听直到vol > 0.3
。然后,它应该返回并停止我的秒表。但是,虽然音量似乎已注册,但我的函数从不返回并停止秒表。我不了解执行流程的哪一部分?一旦音量达到绘图功能的阈值,如何使我的第一个功能停止秒表?
function callStopwatch() {
var watch = new Stopwatch(timer);
watch.start();
if(draw()){
watch.stop();
}
}
function draw() {
let flag = false;
var vol = mic.getLevel();
if(vol > 0.2){
console.log("true"); //created to check whether sound detection is working
flag = true;
}
return flag;
}
答案 0 :(得分:2)
我发现您的代码存在三个问题:
draw()
。 P5.js每秒自动为您调用draw()
函数60次。你不应该自己称呼它。draw()
函数返回任何内容。因为draw()
是自动调用的,而不是您自动调用的,所以返回值将被忽略。callStopwatch()
函数。我认为您可能想重构代码。使用P5.js流程可以发挥自己的优势。具体来说,P5.js在草图的开头调用setup()
函数,并且每秒调用draw()
60次。使用该结构来构建您的逻辑。
这是我处理方法的框架:
var stopwatch;
function setup(){
stopwatch = new Stopwatch();
stopwatch.start();
}
function draw(){
var vol = mic.getLevel();
if(vol > 0.2){
stopwatch.stop();
}
}