gpt4 book ai didi

iphone - NSTimer 立即触发

转载 作者:搜寻专家 更新时间:2023-10-30 20:11:05 24 4
gpt4 key购买 nike

我正在尝试开发一款游戏并遇到了 NSTimer 的一个小问题,一旦一个 Sprite 出现,它在我的场景中有一定的时间在淡出之前。

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。您编写的代码使计时器在调用选择器hideSprite 之前等待五秒钟。

为计时器提供一个不同的选择器(编写一个只执行 NSLog 的新测试方法),看看会发生什么。这将告诉您 a) 计时器是否确实立即触发,以及 b) 是否有其他东西正在调用 hideSprite

[NSTimer scheduledTimerWithTimeInterval:CALC_TIME target:self selector:@selector(testTimer) userInfo:nil repeats:NO];

-(void) testTimer { NSLog(@"Timer - and only the timer - called me."); }
-(void) hideSprite {
NSLog(@"I definitely wasn't called by the timer.");
}

关于iphone - NSTimer 立即触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8567752/

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