如何停止阻止SamplePlayer和println在一个区域不断调用?

How to stop prevent SamplePlayer and println from calling constantly in a region?

我正在尝试使用 beads library 设置一个程序,如果我的 Kinect 相机在特定区域检测到我的手,它会播放音频样本。

但是,到目前为止,我的布尔设置意味着它会不断地在控制台中打印正在检测到某些内容并快速重放音频样本,直到我将手移开。

我基本上是在想办法让它只切换一次 println 和一次样本。我认为这可能与 .intersects 使它不断触发它有关。

如何设置布尔函数来解决这个问题?

if (blob.getRect().intersects(screenRects.get(0))){
   println("INSIDE_REGION1" + millis());
   String filename = dataPath("bubble.mp3");
   SamplePlayer sp = new SamplePlayer(ac,            
                                      SampleManager.sample(filename));
   ac.out.addInput(sp);           
}

我希望它能一次又一次地打印 INSIDE_REGION1-milliseconds 如果我将手移出并移回。

尝试添加一个布尔值。默认情况下,false 会在您的代码被触发一次后变为 true,因此您可以知道 println() 是否已切换。当您移开手时,布尔值将再次变为 false

编辑: 像这样:

boolean beenPrinted = false;

if (blob.getRect().intersects(screenRects.get(0)) && !beenPrinted){
   println("INSIDE_REGION1"+millis());
   String filename = dataPath("bubble.mp3");
   SamplePlayer sp = new SamplePlayer(ac,            
                                      SampleManager.sample(filename));
   ac.out.addInput(sp);
   beenPrinted = true;
}