2017-04-26 6 views
0

J'utilise le mouvement de saut pour jouer des notes d'instrument, et j'utilise palmPosition pour déclencher le son à jouer, mais ce n'est pas ce que je veux, le palmPosition est en fonction de mise à jour, le son jouera base sur les taux de trame encore et encore. trop vite, je veux le mouvement de saut juste comme la souris et la souris vers le bas ... Jouer les sons lorsque le palmPosition est changé. Voici mon code,Leap mouvement jouer le son dans la fonction de mise à jour (openframework)

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; 

       } 
... 
    } 
+1

Vous devriez être en mesure de vérifier si le son [ 'isPlaying()'] (http://openframeworks.cc/documentation/sound/ofSoundPlayer/#show_isPlaying) et seulement jouer si elle est déjà fait pas que –

+0

@George Profenza, merci pour le conseil, travaille ~~~ – Eleanor

+0

doux! J'ai ajouté le commentaire comme réponse pour référence future. N'hésitez pas à voter/marquer si c'était utile;) –

Répondre

0

Vous vérifiez si le son isPlaying() et seulement jouer si elle est pas déjà fait cela.

par exemple.

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; 

       }