我有一个问题。如何使用计时器暂停倒计时?我正在开发一款游戏。在游戏中,我需要在计时器暂停时进入下一个视图,并在返回后我想恢复它。
我在视图中尝试此代码:
[mytimer pause];
// to resume
[mytimer resume];
我尝试了这段代码,但我收到一条警告:“NSTimer可能无法回应'暂停'”
我使用该警告构建,当我按下暂停按钮时,应用程序崩溃。
答案 0 :(得分:8)
NSTimer确实没有恢复和暂停方法,因此在发生此类警告后,您最终可能会在运行时崩溃。通常,您可以创建两种计时器(请参阅NSTimer类引用),一种只执行一次,第二次重复执行。例如:
这样你就可以创建一个定时器,它将每秒输入一次回调myMethod。
NSTimer *myTimer = [NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(myMethod:)
userInfo:nil
repeats:YES];
你可能会选择这个为你的目的,你班上应该保留一些
BOOL pause
变量和回调myMethod执行以下操作:
- (void) myMethod:(NSTimer *) aTimer
{
if (!pause) {
// do something
// update your GUI
}
}
您可以在代码中的某处更新暂停。 要停止计时器(并释放它),请致电
[myTimer invalidate];
祝你好运
答案 1 :(得分:1)
你想要的是OpenGLES应用程序带给你的东西。您应该创建两个这样的方法:
- (void)startAnimation
{
self.animationTimer = [NSTimer scheduledTimerWithTimeInterval:animationInterval target:self selector:@selector(selector) userInfo:nil repeats:YES];
}
- (void)stopAnimation
{
[animationTimer invalidate];
animationTimer = nil;
}
就是这样。
答案 2 :(得分:0)
请参阅NSTimer Class Reference,没有pause
方法。