2013-03-12 56 views
1

我想添加一个事件处理程序按钮的XNA游戏板使用Microsoft Visual c#的按钮。我试着在update方法中按下按钮状态的测试,但由于更新方法被称为像每秒60次,它检查按钮按下并注册了一堆。是否有一种方法可以让事件监听者按下按钮并呼叫事件,而不是通过一堆时间? 这是我在更新方法的代码不起作用:如何创建一个游戏手柄按钮的EventHandler不按更新方法

protected override void Update(GameTime gameTime) 
    { 
      if(GamePad.GetState(PlayerIndex.One).Buttons.Y == ButtonState.Pressed) 
    { 
       //do some code 
      } 
    } 

这个没有做什么,我需要的,可有人请点我在正确的方向?

回答

0

通常为单按逻辑是这样的:

if (button_is_pressed_now && button_was_not_pressed_last_frame) 
{ /* there was a single press */ } 

翻译为您的情况有:

if(currentGamepadState(PlayerIndex.One).Buttons.Y == ButtonState.Pressed && 
    previousGamepadState(PlayerIndex.One).Buttons.Y != ButtonState.Pressed) 
{ 
      //do some code 
} 

这意味着你需要跟踪先前的游戏手柄的状态。微软的官方教程有更多的:http://xbox.create.msdn.com/en-US/education/tutorial/2dgame/getting_started

也就是说,你并不真的需要一个事件处理程序。

相关问题