处理:如何让函数在 运行 下一行之前等待?

Processing: How can i make a function wait before running the next line?

我正在尝试创建一个向用户显示注释的程序,几秒钟后他们通过蜂鸣器获得触觉反馈,他们需要尽快按下该注释。蜂鸣器通过arduino连接。目前,当音符首次出现在屏幕上时,蜂鸣器会发出蜂鸣声。我正在尝试找到一种方法让蜂鸣器在几毫秒后工作,以更接近他们实际需要敲击音符的时间。将计时器与 millis() 或 delay() 一起使用将无法正常工作。

void readNotes(){
   int i = notesLineIndex;
   if(notesLineIndex < notes.length) {
      notesLineIndex++;
    }
   else return;
   notesLine= notes[i];    
   String[] list = split(notesLine, ',');

   if (Integer.parseInt(list[0]) == 1) el1 = 0;
   if (Integer.parseInt(list[1]) == 1) el2 = 0;
   if (Integer.parseInt(list[2]) == 1) el3 = 0;

   //add delay 
   notesBuzz= notes[i];    
   myPort.write('a'); //create a starting point for array
   myPort.write(list[0]);
   myPort.write(list[1]);
   myPort.write(list[2]);
 }

您可以使用delay函数。

delay(1000) //wait for 1 second

您有 2 个选择:

音符位置:如果音符在屏幕上水平移动,您可以根据音符的 x 位置实现触发器。可能是最简单的选择。如果垂直,请使用 y 位置。

Millis():当音符第一次出现时,将该音符的 millis() 存储在一个变量中。然后在每一帧上,检查存储值和当前 millis() 之间的差异是否大于所需的延迟时间。如果是,请启动蜂鸣器。

关于 delay() 函数的注意事项:除了 prototyping/testing 之外,很少有情况应该使用它。这是因为 delay() 完全停止了程序的执行。