是否有任何方法可以将一小部分秒的延迟添加到循环中(例如A for循环)。即每次迭代之后我想要一个短暂的延迟。在循环中添加延迟
我知道cocos2d允许您延迟安排选择器。但我不确定在这种情况下如何使用它。
我也知道,睡眠是昂贵的,不建议。
有什么建议吗?
是否有任何方法可以将一小部分秒的延迟添加到循环中(例如A for循环)。即每次迭代之后我想要一个短暂的延迟。在循环中添加延迟
我知道cocos2d允许您延迟安排选择器。但我不确定在这种情况下如何使用它。
我也知道,睡眠是昂贵的,不建议。
有什么建议吗?
你可以用C的睡眠功能:
sleep(seconds);
但你也可以看看UITimer
,也可能是基于块的performSelector:withObject:afterDelay:
方法。
在cocos2d,则不应使用NSTimers。如果你想有可能暂停你的游戏,它会造成麻烦。
如果你想在迭代之间循环一些具有固定延迟的动作,你可以自由的使用scedule:interval:方法来获得所需的延迟。
[self schedule:@selector(methodToScedule) interval:yourDelay]
或者如果您必须做随机延迟,您可以使用cocos2d操作的顺序。例如
- (void) sceduleMethod
{
// do anything you want
ccTime randomDuration = // make your random duration
id delayAction = [CCDelayTime actionWithDuration: randomDuration];
id callbackAction = [CCCallFunc actionWithTarget:self selector:@selector(scheduleMethod)];
id sequence = [CCSequenece actionOne: delayAction actionTwo: callbackAction];
[self runAction: sequence];
}
在这种情况下,您必须只调用一次您的方法。然后它会以给定的延迟召唤自己。
谢谢你的帮助 – plawres
希望你不会在主(UI)线程上做这种延迟,否则你的用户会注意到这一点,而不会对你感到满意。 –
我不确定,但是'sleep()'可能在这里很有用。 – SmartTree