[英]Waiting while KeyPressed in XNA
我正在嘗試學習XNA游戲編程,現在我想等待按鍵被按下時執行的測試:
while (IsKeyPressed = Keyboard.GetState().IsKeyDown(key));
但是當釋放鍵時IsKeyPressed也是如此
該代碼實際上是自旋鎖。 不要使用自旋鎖 。
您看到的錯誤很可能是由於您正在使用自旋鎖,因此沒有機會正確更新。
相反,您應該閱讀所按下的鍵,並在與停止處理相關的任何類中設置狀態( if
檢查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
and Continue
,但是這將對所提供的代碼進行微優化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.