2010-09-12 112 views
0

我有一个应用程序的想法,这将需要我实现这些小精灵,需要基本的物理特性,如重力,加速等......所以自然我看着iPhone的游戏循环,这里有很多线索,但我想要了解的是我想能够创建这些精灵并让它们使用游戏循环自然行为,但仍然具有完整的“标准”iPhone交互,即触摸,捏,核心动画,核心数据等...iPhone游戏循环混合

这就像在后台线程上实现游戏循环一样简单,并更新该线程上的精灵,然后在主UI线程上执行标准操作(当然明显的后台任务)?

我想这种类型的事情的一般概述,如果可能的话。

回答

1

我想要的是同样的东西,但iPhone SDK的全部是关于异步和回调,最好是与框架一起滚动而不是与之对抗。如果Cocos2d不能满足你,你可以考虑挂钩到NSRunLoop。对于CADisplayLink:在使用OpenGL ES的CADisplayLink(您声明您没有使用,因此我不再详述)时,我注意到性能下降(三角形吞吐量减少)。

+0

你最终使用Cocos2d? – Mark 2010-09-13 04:29:15

+0

更好的回答(不能编辑旧版本):不。我没有制作游戏,但我已经使用了Cocos-2d作为参考。我的应用程序不是具有一堆对象的“游戏” - 它是一个高吞吐量的绘图应用程序。 Cocos-2d适用于操纵对象并重新渲染它们。至于线程:iOS SDK努力推动使用回调的异步任务,并与之合作。唯一一次我会使用一个线程来执行CPU任务,如果我想有一个更快的主运行循环(所以我的应用程序不会被看门狗杀死)。而且,目前的iOS设备只有一个单线程单核ARM。 – MrAnonymous 2010-09-13 15:51:26

+0

我看,所以你只是用它作为参考代码?有趣的是,我也在考虑这样做,也许我应该打开源代码并观察一下。在这一天结束时,我只对运行动画精灵感兴趣,我仍然认为实施整个cocos2d框架是过度的 – Mark 2010-09-13 22:50:58

1

在Xcode中尝试创建一个iPhone OpenGL ES项目。只需构建并使用默认代码运行即可。你应该看到一个盒子上下移动。这个简单的例子应该让您深入了解动画对象以及设备操作系统版本的重要性。 OpenGL视图基于一个普通视图,您可以附加手势观察者。

+0

opengl是不是我熟悉的区域,所以我想避免它..虽然我应该可能进入它的某个时候,我只是没有真正的时间学习曲线 – Mark 2010-09-12 23:51:51

+0

我知道这种痛苦。但它确实显示了如何为iOS 3.2使用CADisplayLink,但在创建动画循环之前需要为3.2之前的任何内容恢复NSTimer。我还没有尝试过,但是你可以在没有OpenGL的普通UIView上使用它。 – 2010-09-13 00:15:50

+0

有趣的是,我实际上认为3.2(iPad)可能是这里的一种方式,CADisplayLink看起来像是一种非常类似于WPF实现循环方法(我非常熟悉)的方法。理论上,你可以挂钩到标准的UIViews – Mark 2010-09-13 00:46:28

0

查看可用的游戏物理引擎之一。 Cocos2D是一个开始的好地方:http://www.cocos2d-iphone.org/ - 免费和大量资源开始使用。

+0

我已经看了一下这个框架,你认为这可以用于这种类型的东西?文档不是很精彩(维基只是不为我做...),从我可以告诉它主要集中在游戏,但我想它应该做的伎俩...... – Mark 2010-09-13 00:43:18