当前位置:  开发笔记 > IOS > 正文

除了使用NSTimer之外,在iPhone上创建游戏循环的更好方法是什么?

如何解决《除了使用NSTimer之外,在iPhone上创建游戏循环的更好方法是什么?》经验,为你挑选了1个好方法。

我在iPhone上编写游戏.我目前正在使用NSTimer来触发我的游戏更新/渲染.这个问题是(在分析之后)我似乎在更新/渲染之间失去了很多时间,这似乎主要与我插入NSTimer的时间间隔有关.

所以我的问题是使用NSTimer的最佳替代方案是什么?

请回答一个替代方案.



1> zoul..:

你可以通过线程获得更好的性能,尝试这样的事情:

- (void) gameLoop
{
    while (running)
    {
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
        [self renderFrame];
        [pool release];
    }
}

- (void) startLoop
{
    running = YES;
#ifdef THREADED_ANIMATION
    [NSThread detachNewThreadSelector:@selector(gameLoop)
    toTarget:self withObject:nil];
#else
    timer = [NSTimer scheduledTimerWithTimeInterval:1.0f/60
    target:self selector:@selector(renderFrame) userInfo:nil repeats:YES];
#endif
}

- (void) stopLoop
{
    [timer invalidate];
    running = NO;
}

renderFrame方法中准备帧缓冲区,绘制帧并在屏幕上显示帧缓冲区.(PS 关于各种类型的游戏循环及其优缺点,有一篇很棒的文章.)

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有