Cocos2d:如何创建全局计时器?

时间:2015-05-14 14:52:03

标签: ios objective-c cocos2d-iphone

我正在做一个我完全是新手的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!

任何建议都将不胜感激。感谢。

1 个答案:

答案 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;
    }
}

这是重复超时;你需要另一个变量来进行单次超时。