我需要显示一个视图,我需要在该视图上使用其顶点为多边形设置动画。多边形应该是可触摸的,因此一旦被触摸就会触发一个事件,并且一旦它触发了该事件,我需要能够使用一些动画过程来移动它的顶点。
我需要三个这样的多边形来形成一个 3D 立方体。
变暗的区域是我拥有立方体的视图(实际上是图像)。
该过程有两个步骤:绘图和事件处理。
可以使用 Quartz2D 进行绘图,通过在视图中实现 drawRect,计算屏幕上立方体的坐标,然后创建和绘制路径,这对于实心填充的形状非常有效。另一种方法使用您指定三角形的 OpenGL 视图。
在事件处理端,可以实现 onTouchesBegan: 和好友获取交互的位置,可能还有 hitTest: 允许其下的其他视图处理后续事件。接下来你需要决定的是你想要的准确度——你可以定义一个与立方体大致匹配的盒子并测试它的触摸。无论如何,大多数人都会想在中间的某个地方触摸它。为了准确测试,您需要屏幕坐标,并测试每个多边形中的每个三角形以查看它是否包含位置。谷歌对此所需的数学进行了很好的解释。在 OpenGL 的情况下,您必须手动重复 OpenGL 执行的计算,以找出您的多边形在屏幕上的最终位置。