2
我想學習XNA遊戲編程,現在我想等待一個鍵被按下 我測試它:時等候的keyPressed在XNA
while (IsKeyPressed = Keyboard.GetState().IsKeyDown(key));
但IsKeyPressed也是如此,當鍵被釋放
我想學習XNA遊戲編程,現在我想等待一個鍵被按下 我測試它:時等候的keyPressed在XNA
while (IsKeyPressed = Keyboard.GetState().IsKeyDown(key));
但IsKeyPressed也是如此,當鍵被釋放
該代碼實際上是自旋鎖。 請勿使用自旋鎖。
您看到的錯誤可能是,因爲您正在使用自旋鎖,它沒有得到正確更新的機會。
取而代之,您應該讀取被按下的鍵,並在與停止處理相關的任何類中設置狀態(可能在Update
函數中簡單地使用if
檢查)。然後,當您檢測到版本時,您將更改狀態,以便if
檢查通過。
喜歡的東西:
//Main Update
if (Keyboard.GetState().IsKeyDown(key))
myObject.Wait();
else
myObject.Continue();
//Other object
public void Wait()
{
waiting = true;
}
public void Continue()
{
waiting = false;
}
public void Update()
{
if (!waiting)
{
//Update state
}
}
你總是可以檢查以前的狀態,以避免調用Wait
和Continue
多次,但那將是一個與所提供的代碼的微優化的東西。