如何阻止SamplePlayer和println在区域内不断调用?

问题描述 投票:0回答:1

我正在尝试使用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毫秒,如果我把手伸出来再打印,我会再打印一次。

java boolean processing kinect audio-player
1个回答
0
投票

尝试添加布尔值。 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;
}
© www.soinside.com 2019 - 2024. All rights reserved.