1

我的程序有一个循环,每秒进行 60 次计算和绘图。我希望我的运动动作每秒只执行一次,我该如何使用objective-c方法来做到这一点?

4

3 回答 3

3

您可以使用

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats

一秒钟:

NSTimer *yourTastTimer = scheduledTimerWithTimeInterval:1 target:yourTarget selector:@selector(yourMethod) userInfo:nil repeats:YES;

您可以查看NSTimer的文档以获取详细信息。

编辑

您可能还想检查这个答案

于 2012-08-07T09:55:52.740 回答
2

如果您使用 Cocos2D for iphone,则不得使用 NSTimer。

按照文档,您应该使用这样的schedule:interval:方法:

[self schedule: @selector(tick:) interval:1.0f];

- (void) tick: (ccTime) dt
{
    //...
}
于 2012-08-07T12:18:58.560 回答
0

如果您使用 CCSprite,他们有一个可以解决问题的 schedule 方法。基本上为主循环做什么。您还可以在主循环中保留一个代码,并检查这是代码%60==0。然后调用你的移动动作。

我在这里读到 NSTimer 不鼓励使用 cocos2d 。

于 2012-08-07T10:04:10.697 回答