有没有办法在循环中添加几分之一秒的延迟(例如A for循环)。即每次迭代后我想要一个短暂的延迟。
我知道cocos2d允许你安排延迟的选择。但我不确定在这种情况下如何使用它。
我也知道睡眠费用昂贵且不可取。
有什么建议吗?
答案 0 :(得分:2)
您不应该在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];
}
在这种情况下,您必须只调用一次方法。然后它会在给定的延迟时自行调用。
答案 1 :(得分:0)
你可以使用C的睡眠功能:
sleep(seconds);
但您也可以查看UITimer
,或者可能是基于块的performSelector:withObject:afterDelay:
方法。
有关更多基于NSObject的方法,请参阅此内容:https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html#//apple_ref/occ/instm/NSObject/performSelector:withObject:afterDelay