2013-03-12 57 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

也就是說,你並不真的需要一個事件處理程序。

相關問題