1

我正在尝试使用 Microsoft Visual c# 将事件处理程序添加到 XNA 游戏手柄的按钮按下。我已经尝试在更新方法中对要按下的按钮状态进行测试,但由于更新方法每秒调用 60 次,它会检查按钮是否按下并注册了很多次。有没有办法让事件监听器按下按钮并调用事件一次而不是多次?这是我在更新方法中不起作用的代码:

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

这不符合我的需要,有人可以指出我正确的方向吗?

4

1 回答 1

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

也就是说,您实际上并不需要事件处理程序。

于 2013-03-12T03:11:17.183 回答