有什么方法可以将几分之一秒的延迟添加到循环中(例如 A for 循环)。即我希望每次迭代后有一个短暂的延迟。
我知道 cocos2d 允许您延迟安排选择器。但我不确定在这种情况下如何使用它。
我也知道睡眠是昂贵的,不可取的。
有什么建议么?
有什么方法可以将几分之一秒的延迟添加到循环中(例如 A for 循环)。即我希望每次迭代后有一个短暂的延迟。
我知道 cocos2d 允许您延迟安排选择器。但我不确定在这种情况下如何使用它。
我也知道睡眠是昂贵的,不可取的。
有什么建议么?
你不应该在 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];
}
在这种情况下,您只能调用您的方法一次。然后它会以给定的延迟调用自己。
你可以使用 C 的 sleep 函数:
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