如何使用nstimer显示秒数?

时间:2011-05-27 13:32:30

标签: iphone objective-c nstimer

我正在开发一个游戏项目。我需要知道如何在游戏开始到游戏结束时显示秒数?还需要以“00:01”的格式显示。如果时间超过60分钟,它还应显示小时“1:00:01”

任何指导?

...谢谢

3 个答案:

答案 0 :(得分:7)

在结合Nathan和Mark的答案后,完整的计时器方法看起来像这样:

- (void)timer:(NSTimer *)timer {
    NSInteger secondsSinceStart = (NSInteger)[[NSDate date] timeIntervalSinceDate:startDate];

    NSInteger seconds = secondsSinceStart % 60;
    NSInteger minutes = (secondsSinceStart / 60) % 60;
    NSInteger hours = secondsSinceStart / (60 * 60);
    NSString *result = nil;
    if (hours > 0) {
        result = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds];
    }
    else {
        result = [NSString stringWithFormat:@"%02d:%02d", minutes, seconds];        
    }
    // set result as label.text
}

当你开始游戏时,你设置startDate并启动计时器,如下所示:

self.startDate = [NSDate date];
timer = [NSTimer scheduledTimerWithTimeInterval:0.25 target:self selector:@selector(timer:) userInfo:nil repeats:YES];

停止游戏时,你可以使用它:

self.startDate = nil;
[timer invalidate];
timer = nil;

答案 1 :(得分:1)

您可以安排一个每秒触发一次的重复计时器,当它触发时会调用一个更新时间显示的方法:

[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES];

然后在更新方法

- (void)timerFireMethod:(NSTimer*)theTimer {
    //remove a second from the display
}

您需要将计时器设置为属性,以便在完成时无效。

答案 2 :(得分:1)

NSTimeInterval t = 10000; printf(“%02d:%02d:%02d \ n”,(int)t /(60 * 60),((int)t / 60)%60,((int)t)%60);

输出 二时46分40秒

如果你想获得带小数点的秒数,那么你必须使用mode()有点困难。