在循环中添加延迟

时间:2012-05-12 16:55:55

标签: objective-c ios4 cocos2d-iphone

有没有办法在循环中添加几分之一秒的延迟(例如A for循环)。即每次迭代后我想要一个短暂的延迟。

我知道cocos2d允许你安排延迟的选择。但我不确定在这种情况下如何使用它。

我也知道睡眠费用昂贵且不可取。

有什么建议吗?

2 个答案:

答案 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

相关问题