簡體   English   中英

在XNA中等待KeyPress

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM