【发布时间】:2011-12-19 21:23:32
【问题描述】:
我正在尝试开发一款游戏,但遇到了 NSTimer 的一个小问题,一旦精灵出现,它就会在我的场景中出现一定的时间,然后淡出。
double CALC_TIME = 5;
[NSTimer scheduledTimerWithTimeInterval:CALC_TIME target:self selector:@selector(hideSprite) userInfo:nil repeats:NO];
我希望在 5 秒后调用 hideSprite,但它会立即调用(或接近即时)。
一种可能的解决方案: 我知道我可以通过将计时器设置为重复来做到这一点,并且第一次设置一个 bool firstCall,然后在下一个间隔完成淡化,计时器无效,但我认为这不是一个好习惯
像这样:
bool firstCall = false;
-(void)hideSprite{
if(!firstCall){
firstCall = true
}else{
//fade out sprite
//Invalidate NSTimer
//firstCall = false;
}
}
感谢您的帮助!
【问题讨论】:
-
这应该可以。还有其他问题 - 您确定
hideSprite没有被任何其他代码调用吗?像一些测试代码在定时器设置后仍然留在里面吗? -
不,我刚刚检查了那里,该方法只从一个地方调用,我添加了一个 NSLog,一个在我初始化方法之后,一个在方法中调用。保持输出:2011-12-19 21:43:11.547 Squish Em[14144:10a03] Timer Called 2011-12-19 21:43:11.562 Squish Em[14144:10a03] Called Timer 2011-12-19 21:43:16.582 Squish Em[14144:10a03] 调用定时器 2011-12-19 21:43:16.596 Squish Em[14144:10a03] 调用定时器
标签: iphone objective-c nstimer