2013-02-26 211 views
1

有誰知道如何添加一個計時器來控制進度條的速度嗎? 此外,我需要那個時間來使用它的另一個功能,它只能在進度條移動時運行,並在進度條停止時停止。因此在具體的我需要設置一個計時器來控制進度條以及如何獲取它呢?在XNA遊戲中progressBar

,並順便說一下..我在C#代碼使用XNA遊戲發展論壇在Visual Studio

問候,

+2

好的,你到目前爲止試過了什麼?你卡在哪裏? – phadaphunk 2013-02-26 21:08:44

+0

我相信DaPhunk意味着你嘗試了什麼技術。你是否做了一個'ProgressBar'類,如果有的話,我們可以看一段代碼片段嗎?有沒有其他的代碼可以幫助我們? (回覆刪除的OP評論) – gunr2171 2013-02-26 21:22:31

回答

1

沒有計時器功能在XNA每說,但你可以含住數量秒過去了。

UpdateDraw方法Game提供GameTime對象,其保持TotalTimeElapsed屬性。保留該對象的副本(只是確保其副本而不是參考),並將其與「當前時間」進行比較。如果差異超過目標值,請執行您的事件。

//at top of class 
private TimeSpan previousTime; 
private TimeSpan targetTime = new TimeSpan(0, 0, 5); //5 seconds 
private bool isFirstUpdate = true; 


//later down in your update 
public void Update(GameTime gameTime) 
{ 
    if(isFirstUpdate) 
    { 
     previousTime = new TimeSpan(gameTime.TotalElapsedTime.Ticks); 
     isFirstUpdate = false; 
    } 

    if(gameTime.TotalElapsedTime - previousTime >= targetTime) 
    { 
     //do some event, and don't forget to re-set previous time 
     previousTime = new TimeSpan(gameTime.TotalElapsedTime.Ticks); 
    } 
} 
+0

'GameTime.Elapsed ...'的類型是'TimeSpan' – user1306322 2013-02-27 00:33:15

+0

的確如此。您需要找到一種方法來替換在WinForms中常見的定時器控件。 'ElapsedGameTime'是一個'TimeSpan',因此將「目標時間」設置爲您通常在計時器控件中設置的「時間間隔」。 – gunr2171 2013-02-27 16:36:44

+0

@ gunr2171是的,這正是我想要的。從那裏我得到的時間間隔? – user2112950 2013-02-28 09:23:04