ChucK操纵杆控制

问题描述:

我想从操纵杆接收输入。输入已收到 声音应该产生。这有效,但它响应推动和释放操纵杆的按钮。我如何才能让它只响应推送而不是发布。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; 


     } 

    } 

// 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; 

    } 
} 
}