我正在做一个我完全是新手的cocos2d项目。所以请耐心等待。
在游戏中创建将在整个应用程序中使用的计时器。
-(void)onEnter
{
[super onEnter];
[self.timerCountDown invalidate];
self.timerCountDown = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerCountDown:) userInfo:nil repeats:YES];
}
-(void) timerCountDown: (NSTimer*) timer {
self.secondsLeft--;
}
显然,当我点击游戏进入另一个视图时,onEnter再次被调用,触发计时器再次计数。
所以我的问题是我应该如何处理这个问题,以使计时器继续相同的计数,即使我在不同的视图中持续2分钟。
如果它是纯粹的iOS应用程序,我想到了2个选项。第一个是通过segue,第二个是使用UserDefaults。
但是我不认为cocos2d是一样的。也没有segue!
任何建议都将不胜感激。感谢。
答案 0 :(得分:2)
不要使用NSTimer
。而是使用传递给update:
方法的增量时间。
@interface YourClass ()
{
CGFloat _timeout;
}
@end
@implementation YourClass
-(void)onEnter
{
[super onEnter];
_timeout = 30.0;
}
- (void)update:(CCTime)deltaTime
{
_timeout -= deltaTime;
if (_timeout < 0.0) {
// Do thing
_timeout = 30.0;
}
}
这是重复超时;你需要另一个变量来进行单次超时。