2015-12-02 56 views
1

我想從操縱桿接收輸入。輸入已收到 聲音應該產生。這有效,但它響應推動和釋放操縱桿的按鈕。我如何才能讓它只響應推送而不是發佈。ChucK操縱桿控制

更多內容如何讓事件監聽器響應180度的操縱桿動作。目前,當我移動操縱桿它將繼續發出聲音,我已經發布了,即使長時間後

Hid myHid; 

HidMsg msg; 

0=>int device; 

if(!myHid.openJoystick(device)){ 
<<<"Couldn't">>>; 
me.exit(); 
} 

<<<"Ready">>>; 

SndBuf coin=>dac; 
    0.6=>coin.gain; 
0=>coin.pos; 



while(1){ 

    myHid=>now; 
    while(myHid.recv(msg)){ 
     <<<"Rev">>>; 

     me.dir()+"/audio/smw_jump.wav"=> coin.read; 
     .2::second=>now; 


     } 

    } 

回答

1
// make HidIn and HidMsg 
     Hid hi; 
    HidMsg msg; 

    SndBuf jump=>dac; 
    SndBuf coin=>dac; 
SndBuf power_up=>dac; 
    SndBuf blaster=>dac; 


0.85=>coin.gain; 
0=>coin.pos; 

.6=>jump.gain; 
0=>jump.pos; 

.85=>power_up.gain; 
0=>power_up.pos; 

.6=>blaster.gain; 
0=>blaster.pos; 

// which joystick 
    0 => int device; 
// get from command line 
if(me.args()) me.arg(0) => Std.atoi => device; 

// open joystick 0, exit on fail 
if( !hi.openJoystick(device)) me.exit(); 

<<< "joystick '" + hi.name() + "' ready", "" >>>; 

// infinite event loop 
    while(true) 
{ 
// wait on HidIn as event 
hi => now; 

// messages received 
while(hi.recv(msg)) 
{ 
    // joystick axis motion 
    if(msg.isAxisMotion()) 
    { 

     //this is where we pan 
     <<< "joystick axis", msg.which, ":", msg.axisPosition >>>; 
     // OR 
     //if (msg.which == 0) <<< "joystick axis", msg.which, ":", msg.axisPosition >>>; 
     //if (msg.which == 1) <<< "joystick axis", msg.which, ":", msg.axisPosition >>>; 
    } 

    // joystick button down 
    else if(msg.isButtonDown()) 
    { 

     <<< "joystick button", msg.which, "down" >>>; 

     if(msg.which==0){ 
      me.dir()+"/audio/Laser Blasts-SoundBible.com-108608437.wav"=> blaster.read; 
     .2::second=>now; 

      } 

      if(msg.which==4 || msg.which==2 ||msg.which==3 ||msg.which==5){ 
       me.dir()+"/audio/smw_coin.wav"=> jump.read; 
       .2::second=>now; 
      } 

    } 

    // joystick button up 
    else if(msg.isButtonUp()) 
    { 
     <<< "joystick button", msg.which, "up" >>>; 
    } 

    // joystick hat/POV switch/d-pad motion 
    else if(msg.isHatMotion() && msg.idata==0) 
    { 
     <<< "joystick hat", msg.which, ":", msg.idata >>>; 
     me.dir()+"/audio/smb_powerup.wav"=> power_up.read; 
       .2::second=>now; 

    } 
} 
}