我正在尝试使用cocos2d开发iPhone应用程序。我使用“scheduledTimerWithTimeInterval”来调用一个调用固定时间间隔的方法。但现在时间间隔逐渐增加。因此,时间逐渐缓慢。 这是我的代码:
- (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 :(得分:2)
看起来你每0.5秒就会向一些精灵列表中添加一个精灵。最终列表变得非常大,所有这些数据都会导致您的方法执行时间超过0.5秒。这会导致计时器尽可能快速启动,但这并不是那么快,因为它总是在等待你的方法完成。
在不了解您的代码的情况下,这是我最好的猜测。
答案 1 :(得分:2)
不要使用NSTimer。查看cocos2d best practices。
答案 2 :(得分:0)
我无法理解你的问题。你甚至没有在“问题”中使用过一个引号。
您的代码可能需要超过0.5秒才能执行吗?特别是因为在后台完成的工作量增加了每次迭代。 (更多精灵。)
尝试使此功能更快,例如将PNG加载到内存中,并且每次都不从文件加载它。 (无论如何,这对记忆力更好。)
顺便说一下:那个循环看起来像一个无限循环。 (虽然可能是有效的......)
答案 3 :(得分:0)
如果你所做的只是不断旋转对象,CATransforms和Core Animation可能是更好的选择。
答案 4 :(得分:0)
我会使用Cocos2d-iphone的内置间隔。
通过演示cocos项目,您将看到如何在cocos框架中完成这样的事情。