UIViewanimation与CALayers

我正在努力与CALayeranimation概念化,而不是UIView自己的animation方法。 把“ 核心animation ”放到这里,也许有人可以从高层阐述这些概念,这样我就可以更好地想象发生了什么,为什么我想将UIViewanimation(我现在很熟悉)迁移到CALayer iPhone上的animation。 Cocoa-Touch中的每个视图都会自动获取一个图层。 而且,看起来,你可以制作一个和/或另一个animation 甚至把它们混合在一起?!? 但为什么? 线路在哪里? 什么是亲/对每个?

核心animation编程指南立即跳转到图层和计时类,我认为需要退后一步,了解为什么这些不同的片断存在以及如何相互关联。

使用视图控制和眼睛糖果层。 图层不会接收事件,因此使用视图更容易处理这些情况,但是当您想要对精灵或背景等进行animation处理时,图层是有意义的。 事件通过图层传递到后台视图,所以你可以有一个漂亮的可视化表示,而不会搞乱你的事件。 尝试覆盖您刚刚用于视觉表示的视图,并且必须自己将轻击事件传递到基础视图。

UIView总是呈现给CALayer 。 当您使用UIView方法为视图设置animation时,您正在有效地操作底层的CALayer

如果你需要做简单的事情,使用UIView方法。 对于更复杂的情况,或者如果你想特别与任何视图没有关联的层,使用CALayers

我在过去的一年里做了一堆应用程序。 这是我的经验法则:

  1. 使用UIView,直到它不做你想要的。
  2. 然后移动到CoreAnimation。 但在你进入太多之前
  3. 如果您编写的animation不止一个,请使用Cocos2D。

UIView变换只是二维的,只限于此,LAyer变换可以是三维的,你应该使用这些如果你想做三维的东西,UIViewanimation将工作,如果你改变UIView变换或CALayer变换。 所以在基本层面上,当你使用图层而不是视图时,可以做更多的操作。

我不确定我是否误解了Chris对“什么是Cocos2D做得更好?”的回答,难道你还没有其他问题,关于触摸事件处理以及其他许多在OpenGL ES中未命中的东西吗?

这听起来像答案暗示Cocos2D不是基于OpenGL ES框架,实际上它是。 虽然它是一个出色的2D游戏引擎,但它的许多渲染都实现了OpenGL – 附加到一个物理库,它为animation提供了许多非常有趣的可能性 – 而且Chris是正确的 – 这确实是一个很less的代码。