gpt4 book ai didi

iphone - 倒计时器iphone sdk?

转载 作者:行者123 更新时间:2023-12-03 20:01:55 24 4
gpt4 key购买 nike

我的游戏中有一个倒计时器,我正在尝试弄清楚如何制作它,以便它显示两位小数并在我的表格中显示两位小数的记录。现在它以整数倒数并以整数记录。有什么想法吗?

-(void)updateTimerLabel{

if(appDelegate.gameStateRunning == YES){

if(gameVarLevel==1){
timeSeconds = 100;
AllowResetTimer = NO;
}
timeSeconds--;
timerLabel.text=[NSString stringWithFormat:@"Time: %d", timeSeconds];
}

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

最佳答案

要实现亚秒级更新,计时器的间隔需要 < 1。但 NSTimer 的精度仅为 50 毫秒左右,因此 scheduledTimerWithTimeInterval:0.01 将不起作用。

此外,计时器可能会因各种事件而延迟,因此使用 timeSeconds 会导致计时不准确。通常的方法是将 NSDate now 与计时器启动时的日期进行比较。然而,由于此代码是针对游戏的,因此当前的方法可能会给玩家带来更少的挫败感,尤其是。如果程序或后台进程消耗大量资源。

<小时/>

要做的第一件事是将 countdownTimer 转换为亚秒间隔。

countdownTimer = [NSTimer scheduledTimerWithTimeInterval:0.67 target:self selector:@selector(updateTimerLabel) userInfo:nil repeats:YES];

那么,不要以秒为单位倒计时,而是以厘秒为单位:

if(appDelegate.gameStateRunning == YES){
if(gameVarLevel==1){
timeCentiseconds = 10000;
AllowResetTimer = NO;
}
}
timeCentiseconds -= 67;

最后,在输出中除以 100:

timerLabel.text=[NSString stringWithFormat:@"Time: %d.%02d", timeCentiseconds/100, timeCentiseconds%100];
<小时/>

或者,使用double:

double timeSeconds;
...
if(appDelegate.gameStateRunning == YES){
if(gameVarLevel==1){
timeSeconds = 100;
AllowResetTimer = NO;
}
}
timeSeconds -= 0.67;
timerLabel.text=[NSString stringWithFormat:@"Time: %.2g", timeSeconds];

关于iphone - 倒计时器iphone sdk?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2256626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com