我目前正在制作一个带有倒数计时器的小游戏。我使用 NSTimer,你可以得到额外的时间或更少的时间,取决于你的行动。当我向计时器添加或删除秒数时,时间标签有问题。问题出在我身上,我正在调用我的方法 timerAction,当我添加或删除时间时,他在标签中设置了新时间,然后 NSTimer 也在调用该方法。如果我不调用 timerAction,我必须等待 1 秒才能使用 NSTimer 刷新标签。
那么,我应该怎么做才能解决我的问题?
谢谢你的帮助。
我目前正在制作一个带有倒数计时器的小游戏。我使用 NSTimer,你可以得到额外的时间或更少的时间,取决于你的行动。当我向计时器添加或删除秒数时,时间标签有问题。问题出在我身上,我正在调用我的方法 timerAction,当我添加或删除时间时,他在标签中设置了新时间,然后 NSTimer 也在调用该方法。如果我不调用 timerAction,我必须等待 1 秒才能使用 NSTimer 刷新标签。
那么,我应该怎么做才能解决我的问题?
谢谢你的帮助。
首先,我想问一下您的代码。
此外,在这种情况下,我会喜欢这种模式。
@property (nonatomic) NSInteger remainingTime;
@property (nonatomic) NSTimer *timer;
timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(timerAction) userInfo:nil repeats:YES];
- (void)timerAction {
if (!countingFinish) {
remainingTime --;
//backend regular action
[self frontEndUpdate];
}else {
[timer invalidate];
}
}
- (bool)countingFinish {
return (reamainingTime <= 0);
}
- (void)frontEndUpdate {
//update time label, or other front end update action
}
- (void)addCountingRemaining:(NSInteger) _sec {
remainingTime += _sec;
[self frontEndUpdate];
}
顺便说一句,这是 juz 草案代码。希望能帮助到你