我正在尝试使用Microsoft Visual c#向XNA游戏手柄的按钮添加事件处理程序。我已尝试在更新方法中对要按下的按钮状态进行测试,但由于更新方法被调用为每秒60次,因此它会检查按钮按下并多次注册。是否有办法让按钮被按下并立即召唤事件? 这是我的更新方法中的代码不起作用:
protected override void Update(GameTime gameTime)
{
if(GamePad.GetState(PlayerIndex.One).Buttons.Y == ButtonState.Pressed)
{
//do some code
}
}
这不能满足我的需要,有人可以指出我正确的方向吗?
答案 0 :(得分: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
那就是说,你真的不需要一个事件处理程序。