gpt4 book ai didi

c++ - 更新功能中的跳跃 Action 播放声音(openframework)

转载 作者:行者123 更新时间:2023-12-03 01:46:03 24 4
gpt4 key购买 nike

我使用跳动 Action 弹奏乐器音符,并使用palmPosition触发播放的声音,但这不是我想要的,palmPosition具有更新功能,声音将根据帧频反复播放。太快了,我希望跳跃 Action 就像鼠标向上和向下一样...当palmPosition更改时播放声音。
这是我的代码,

    void ofApp::update(){
...
if (hands[i].palmPosition().z < 50) {
isTouch = true;
if ((hands[i].palmPosition().x > -240)&& (hands[i].palmPosition().x < -160)) {
pianoE.setVolume(1);
pianoE.play();
}

if ((hands[i].palmPosition().x >-120)&& (hands[i].palmPosition().x <-60)) {
pianoE.setVolume(1);
pianoE.play();
}

if ((hands[i].palmPosition().x >-20)&& (hands[i].palmPosition().x < 20)) {
pianoC.setVolume(1);
pianoC.play();
}

if ((hands[i].palmPosition().x > 90)&& (hands[i].palmPosition().x < 120)) {
pianoC.setVolume(1);
pianoC.play();
}

if ((hands[i].palmPosition().x >180)&& (hands[i].palmPosition().x < 240)) {
pianoC.setVolume(1);
pianoC.play();
}
}else{
isTouch = false;

}
...
}

最佳答案

您检查声音 isPlaying() 是否存在,并仅在尚未播放时才播放。

例如

if (hands[i].palmPosition().z < 50) {
isTouch = true;
if ((hands[i].palmPosition().x > -240)&& (hands[i].palmPosition().x < -160)) {
pianoE.setVolume(1);
if(!pianoE.isPlaying()) pianoE.play();
}

if ((hands[i].palmPosition().x >-120)&& (hands[i].palmPosition().x <-60)) {
pianoE.setVolume(1);
if(!pianoE.isPlaying()) pianoE.play();
}

if ((hands[i].palmPosition().x >-20)&& (hands[i].palmPosition().x < 20)) {
pianoC.setVolume(1);
if(!pianoC.isPlaying()) pianoC.play();
}

if ((hands[i].palmPosition().x > 90)&& (hands[i].palmPosition().x < 120)) {
pianoC.setVolume(1);
if(!pianoC.isPlaying()) pianoC.play();
}

if ((hands[i].palmPosition().x >180)&& (hands[i].palmPosition().x < 240)) {
pianoC.setVolume(1);
if(!pianoC.isPlaying()) pianoC.play();
}
}else{
isTouch = false;

}

关于c++ - 更新功能中的跳跃 Action 播放声音(openframework),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43623142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com