我试图开发一款游戏,并运行到NSTimer的一个小问题,一旦精灵出现在我的场景中有一定的时间在淡出之前。NSTimer立即开火
double CALC_TIME = 5;
[NSTimer scheduledTimerWithTimeInterval:CALC_TIME target:self selector:@selector(hideSprite) userInfo:nil repeats:NO];
我想在5秒后调用hideSprite,而是立即调用它(或接近即时)。
一个可能的解决方案: 我知道我可以设置定时复读,并具有设置第一次,然后下一个间隔的衰落做了布尔华美通为此,计时器是无效的,但我不要认为这是很好的做法
像这样:
bool firstCall = false;
-(void)hideSprite{
if(!firstCall){
firstCall = true
}else{
//fade out sprite
//Invalidate NSTimer
//firstCall = false;
}
}
感谢您的帮助!
这应该有效。还有其他的错误 - 你确定'hideSprite'没有被其他代码调用吗?就像一些测试代码在计时器设置完成后立即仍然留在那里一样? – 2011-12-19 21:40:05
不,我刚刚在那里检查,该方法只从一个地方调用, 我添加了一个NSLog,一个在我初始化该方法之后,另一个在它调用的方法中。 保持输出: _2011-12-19 21:43:11.547挤流EM [14144:10a03]计时器调用 2011-12-19 21:43:11.562挤流EM [14144:10a03],叫做定时器 2011-12-19 21:43:16.582 Squish Em [14144:10a03]计时器被叫做 2011-12-19 21:43:16.596 Squish Em [14144:10a03]叫做Timer_ – Rich 2011-12-19 21:44:40