2

在我的 iOS 应用程序中,我根据给定点(CGPointGLKit我想通过CGPoint随着时间的推移改变基础来创建动画,但我不确定我应该使用什么方法来制作动画。

我真正在寻找的是一个 API,它允许我指定在每次迭代时调用的函数,就像这样NSTimer做一样,但如果我可以利用轻松进出等优势,那就太酷了。唯一的一块每次迭代需要修改的数据是我的主要CGPoint部分,其余的渲染可以从中确定。

我考虑过但放弃的方法:

  1. 核心动画:我使用 OpenGL 来绘制,所以核心动画似乎没有帮助。

  2. NSTimer:这并没有给我贝塞尔曲线的灵活性,而且看起来很手动。

  3. 基于给定帧率的心跳:我只需要在点变化时重新渲染,而且大部分时间它是静止的。感觉心跳不是正确的方法。

有没有像我描述的那样存在?我必须自己写吗?还是我只是误解了为我提供的工具,这表明我应该再看看我是如何绘制图形的?

4

2 回答 2

2

您可以使用GLKViewGLKViewController进行渲染并更改.update:方法中的点GLKViewController

于 2012-06-16T05:41:35.120 回答
2

我同意另一张海报。假设你可以使用 iOS 5,你应该使用 GLKView 和 GLKViewController。设置为每次屏幕刷新调用一次(在内部使用 CADisplayLink。)如果您不想只使用 iOS 5,则可以自己设置 CADisplayLink。

Core Animation 对 OpenGL 渲染没有用处。但是,您可以使用 Core Animation 的设计来驱动您的设计。核心动画(就像 Cocoa 的其余部分一样)构建在 OpenGL 之上,因此您可以自己完成 CA 所做的一切。它只需要工作。(有时工作量很大。)

Core Animation 使用基于运动的动画模型,而不是基于帧的动画模型。每次渲染场景时,它都会根据动画开始后经过的时间来决定应该应用多少运动。如果它在渲染帧中落后,下一帧会移动得更远,因此随着时间的推移运动是一致的。

至于缓入/缓出时间,你也可以自己做。您需要阅读动画时间。它使用输入时间到输出时间的非线性映射,使用贝塞尔曲线在开始和结束时改变曲线的形状。

于 2012-06-16T12:29:55.820 回答