2009-02-04 56 views
0

我想通过使用cocos2d开发一个iPhone应用程序。我使用“scheduledTimerWithTimeInterval”来调用一个称为固定时间间隔的方法。但现在时间间隔逐渐增加。为此,时间逐渐缓慢。 这里是我的代码:“scheduledTimerWithTimeInterval:”在cocos2d中的问题?

- (void) methodTime: (id) sender{ 

    NSTimer *rat =[NSTimer scheduledTimerWithTimeInterval:(.5) target:self selector:@selector(rotation:) userInfo:nil repeats:YES]; 
} 

- (void) rotation:(NSTimer *)theTimer{ 

    NSLog(@"I m # %i", i); 
    i=i+10; // Here , i is a global int variable. 
    i=i % 1440; 
     if(i==0){ 
      [theTimer invalidate]; 

     } 
     else { 
     int rotationNum=i; 
     Sprite *sp = [Sprite spriteWithFile: @"1.png"]; 
     sp.position=cpv(220,180.5); 
     sp.rotation=rotationNum; 
     [self add:sp];  
     } 

} 

回答

0

我很难理解你的问题。你甚至没有在你的'问题'中使用过一个引号。

是否有可能您的代码需要超过0.5秒才能执行?特别是因为在后台完成的工作量会增加每次迭代。 (更多精灵)

尝试使此功能更快,例如将PNG加载到内存中,并且不要每次都从该文件加载它。 (无论如何这对内存来说更好。)

顺便说一句:该循环看起来像一个无限循环危险。 (虽然可能是它的工作原理......)

0

如果你只是在不断旋转物体,CATransforms和Core Animation可能是一个更好的选择。

2

它看起来像每隔0.5秒就向一些精灵列表添加一个精灵。最终,列表变得非常大,并且所有数据都会导致您的方法执行时间超过0.5秒。这会导致计时器尽可能快速启动,这并不是那么快,因为它始终在等待您的方法完成。

不知道更多关于您的代码,这是我最好的猜测。

0

我会使用内置Cocos2d-iphone的间隔。

通过演示cocos项目,你会看到这样的事情应该在cocos框架中完成。