2012-12-07 82 views
0

我有一個開始的圖像,當你按下輸入,它會去遊戲。問題是,由於這是一個圖像,爲了保持顯示遊戲屏幕,必須按下按鈕。有沒有辦法做到這一點,一旦你按下按鈕,圖像保持關閉?XNA C# - 如何使按鈕按下而不被按下

Update Method: 

helpScreen = new HelpScreen(this); 

if (!helpScreen.gamestarted && Keyboard.GetState().IsKeyDown(Keys.Enter)) 
{ 
    helpScreen.gamestarted = true; 
} 

Draw Method: 

if (!helpScreen.gamestarted) 
{ 
    helpScreen.Draw(spriteBatch); 
} 
+2

你應該真正說明這是什麼編程語言。鑑於風格!= null,這應該是C++/c - 對嗎? – Najzero

+0

對不起,忘記了它的C#並在XNA – user1842558

+0

中完成了,我不是XNA的傢伙,但最好不要使用「isKeyDown」來啓動你的遊戲(或者更好地隱藏幫助屏幕來設置遊戲可見?),但是一旦你按下輸入鍵而不是「按鍵一直按下」,一個「開始」屏幕(例如main)就會在某種永久()循環中調用你的遊戲。如果你永遠打破了這個循環,只需要回到主界面,並讓用戶可以重新開始。 – Najzero

回答

0

商店在遊戲主類中的狀態:

private bool gameStarted = false; 

在您的更新方法檢查輸入:

if (!gameStarted && Keyboard.GetState().IsKeyDown(Keys.Enter)) 
{ 
    gameStarted = true; 
} 

在抽籤方法後來只畫開始的圖象,如果遊戲還沒有開始:

if (!gameStarted) 
{ 
    helpScreen.Draw(spriteBatch); 
} 

這樣,一旦玩家按下按鈕,它將不會再被繪製。同時使用一個普通的gameStarted字段來闡明你的意圖,你可以用其他遊戲邏輯的狀態以一種簡單而自然的方式。

+0

我已經更新了上面的遊戲編碼,以您的建議。屏幕出現,當你按下輸入屏幕進入遊戲,但它不會停留在遊戲中,除非你按下輸入 - 如果你釋放輸入,那麼它將返回到幫助屏幕。 – user1842558

+0

如果您完全按照我的建議進行操作,並且沒有任何代碼干擾,它*會*起作用。只需逐行閱讀:當應用程序啓動時,* gameStarted爲false *。 Draw方法中的條件得到滿足; *屏幕畫*。只要用戶按下Enter,update方法中的條件爲true,* gameStarted將設置爲true *。 Draw方法中的條件現在爲false,並且* helpScreen將不會被繪製,直到gameStarted再次設置爲false。 – Lucius

+0

哦,它的工作!萬分感謝。 我必須移動helpScreen = new HelpScreen(this);到LoadContent部分而不是更新,它工作! – user1842558

0

我可以問,你有沒有做過任何其他編碼周圍的輸入?或者你是從這個幫助屏幕開始的?因爲這涵蓋了輸入處理的基礎知識。

看起來你正在將此視爲一個事件驅動系統,實際上它是一個遊戲循環。這意味着你每個循環檢查一個值,並根據你的輸出而不是事件(例如點擊)

我會做的是記錄前一個值,然後在下一個循環中,將該值與當前值。更新方法中的示例:

//Outside of Update loop declare 
KeyboardState previousState = Keyboard.GetState(); 

//Inside update loop 
if (Keyboard.GetState().IsKeyUp(Keys.Enter) && previousState.IsKeyDown(Keys.Enter)) 
{ 
     helpScreen = null;  } 

當Enter按鈕被按下並釋放時,將觸發此操作。我還會對該代碼執行許多其他更改,但這應該指出您對這個特定問題的正確方向。

+0

我不久前開始在XNA中編寫代碼,並且開始了一些工作。關於遊戲和設計的所有內容都已經完成,這可以幫助屏幕/開始屏幕現在我想添加的內容,但並不是必須的。我會用public enum Gamestates等來完成不同的屏幕(比如遊戲結束,開始屏幕,遊戲屏幕)。但是對於我已經編寫的代碼,這是一件很麻煩的事情,我已經嘗試了3次失敗。 – user1842558

+0

幫助畫面在您加載遊戲時出現,當您按Enter鍵時,會自行移除以顯示遊戲,但問題在於,當輸入被釋放時,它會返回到幫助畫面而不是完全隱藏幫助畫面。 我明白,它不是正確的方式來做到這一點,但我只是想在交付之前添加額外的東西。 – user1842558

+0

那麼上面的方法應該可以幫助您找到您尋求的答案。 – anothershrubery