2012-06-13 118 views
0

我想要做的是將玩家在遊戲中保持活躍的總時間加起來。所以,每次遊戲開始時,我啓動一個計時器,當玩家死亡時,我終止計時器。每次發生這種情況時,我都希望將這個新時間加入到活着的總時間中。這是我的代碼:添加新時間到總時間

int newTime = [newTimeLabel.text intValue]; 
int totalTime = [totalTimeLabel.text intValue]; 
int newTotalTime = newTime + totalTime; 
totalTimeLabel.text = [NSString stringWithFormat:@"Total Time: %d",newTotalTime]; 

然而,這個totalTimeLabel.text保持只顯示新的時間,而不是NEWTIME添加到先前的總時間。我不知道我做錯了什麼。

的我試圖實現一個例子:

試驗1:
NEWTIME = 5
TOTALTIME = 0
newTotalTime = 5 + 0 = 5

試驗2:
NEWTIME = 7
TOTALTIME = 5
newTotalTime = 7 + 5 = 12

試驗3:
NEWTIME = 3
TOTALTIME = 12
newTotalTime = 3 + 12 = 15

等等......

+0

你確定totalTime不是零?這將解釋爲什麼它只會顯示newTime。 – WendiKidd

+0

你的例子沒有通過,但我得到你在說什麼:)是的,如果你仍然有一個應該工作的對象的引用。嗯。試試%i而不是%d?不確定它會修復任何內容,但我總是使用%i作爲整數。 – WendiKidd

+0

%我沒有改變任何東西 – minichrispy

回答

1

的問題是,你要使用UI元素(在查看模型 - 視圖 - 控制器)至存儲您的應用程序狀態/數據(模型模型 - 視圖 - 控制器)。

您應該使用適當類型的一些數據變量來存儲您的總累積時間和新時間,並且應該將它們加在一起並完全獨立於UI來跟蹤它們(查看)。

如果這些值是暫時的(即只需要保持對控制器的生命),那麼它的確定(從視圖,而不是一個純粹的MVC一個實際點)跳過整個型號部分,只需在您的控制器中有兩個變量。然後,無論何時更新它們,您還應通過設置標籤更新查看。我現在推薦這種方法。

但是,如果用戶關閉應用程序並稍後回來,如果這些值持續存在,會不會很好?在這種情況下,您應該實施持久性數據-模型,這些值將存儲在那裏,以便您可以在應用程序關閉後檢索它們。

搜索關於MVC設計模式的信息,您會發現它在設計和實現應用程序時非常有幫助。它會幫助你避免愚蠢的錯誤,以後會回來咬你:)

+0

啊,我想我明白你在說什麼,所以當我每秒向newTime增加1個值時,我也應該將它添加到總時間中,而不是在每場比賽後重新設置totalTime(就像我一直在用newTime一樣),我可以保持它的狀態。此外,保存得分,我一直在使用NSUserDefaults,但感謝MVC上的提示,我會研究這一點。 – minichrispy