2011-11-18 60 views
1

我在cocos2d中创建了一个游戏。在这场比赛中有一个能量棒,这个能量棒每5分钟恢复活力。我希望这种复兴能够跨应用程序运行。如何比较加载时间/日期

我正在考虑这件事,所有我能想出的都是将应用程序的最后终止日期/时间保存在NSUserDefaults中,并将其与新的日期进行比较,一旦重新打开并将时间除以复兴时间,加上正确数量的失去的能量积累...但是我不知道如何比较一个字符串串+ 10小时或任何我的复兴时间。基本上我想要追踪流逝的时间,无论应用程序是打开还是关闭。

+0

注意,要通过将设备的时间更改为更早的时间来防止作弊,则应记录应用程序终止时的当前时间。下次启动时,将存储的时间与当前的设备时间进行比较,如果后者较早,则几乎可以肯定用户正在通过重置时钟来欺骗。几乎因为每年有一次夏令时有时间设置时钟。 – LearnCocos2D

回答

4

这是相当简单的,你可以从时代获得当前时间(毫秒)与:

NSTimeInterval now = [NSDate timeIntervalSinceReferenceDate]; 

这些信息存储在您的默认值。它实际上是一个double,这样你就可以存储它:

[[NSUserDefaults standardUserDefaults] setDouble:now forKey:@"lastClosed"]; 

然后你就可以得到的时间当应用程序将重新启动使用上述NSDate类的方法,并将它们与这样:

NSTimeInterval now = [NSDate timeIntervalSinceReferenceDate]; 
NSTimeInterval timeFromUserDefaults = [[NSUserDefaults standardUserDefaults] doubleForKey:@"lastClosed"]; 
int numSecondsPassed = (timeFromUserDefaults - now); 
+0

LearnCocos2D - 感谢您的回复,我不会想到如果您没有说什么欢呼 克雷格 - 也感谢您的回复......与LearnCocos2Ds的对策建议是否有一个全球性的时间,我们可以基于上述代码而不是当前电话时间?我需要设置一台服务器,并根据时间安排吗?有什么建议么?谢谢 – Savlon

+0

是的,你必须维护一个服务器来获得一个不是特定于设备的时间。在我看来,除非这是一款网络/多人游戏,否则如果有人愿意改变他们的设备时间让他们的惠普备份起来,就让他们。 :) –