我是iPhone开发的新手。我使用[NSTimer scheduledTimerWithTimeInterval:0.01]
进行游戏循环。游戏包含绘图功能,我使用CGContextClipToRect
剪辑动画的大图像。
但速度0.01秒仅在模拟器中工作,而不在设备上。我怎样才能克服这个问题?
定时器代码在视图控制器中为
(void)viewDidLoad {
GameView *main = [[GameView alloc]
initWithFrame:[[UIScreen mainScreen] applicationFrame]];
main.backgroundColor = [UIColor blackColor];
self.view = main;
[main release];
self.tim = [NSTimer scheduledTimerWithTimeInterval: 0.01
target: self selector: @selector (gameloop:) userInfo: nil repeats: YES];
[super viewDidLoad];
}
任何人都可以帮助我?
答案 0 :(得分:1)
NSTimer是这项工作的错误工具。它并不意味着是一个实时计时器。它无法保证何时会发射,你可以轻易地错过帧。
关于如何在this thread上开发此类程序,有很多很好的建议。请特别注意Apple的示例代码。
答案 1 :(得分:0)
正如U62所说,100fps不是一个现实的期望,尝试运行它30,可能每秒60次更新,看看它是如何运行的。此外,如果您编写的游戏需要以高帧率运行,您应该考虑在OpenGL中编写它。
一个选项可能是每个刻度处理逻辑,但每隔几个刻度只绘制到屏幕。
答案 2 :(得分:0)
我的意思是,例如当我为帧动画时,帧在模拟器中以正确的速度显示。 但是在设备中它显示非常慢(FPS),换句话说,一个男孩在模拟器中快速运行。但是 他走路的设备。