视图上的可触摸多边形?

时间:2012-05-31 07:52:38

标签: iphone ios opengl-es

我需要显示一个视图,我需要使用它的顶点为多边形设置动画。多边形应该是可触摸的,因此一旦触摸就触发一个事件,并且我需要能够在触发该事件后使用一些动画程序移动它的顶点。
我需要有三个这样的多边形来形成一个3D立方体。

黑暗区域是我拥有立方体的视图(实际上是图像)。

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

该过程分为两个步骤:绘图和事件处理。

可以使用Quartz2D完成绘图,在视图中实现drawRect,在屏幕上计算立方体的坐标,然后创建和绘制路径,这对于实心填充的形状非常有效。替代方法使用OpenGL视图,您可以在其中指定三角形。

在事件处理结束时,您可以实现onTouchesBegan:和朋友以获取交互的位置,并可能实现hitTest:以允许其下方的其他视图处理后续事件。接下来你需要决定的是你想要的准确度 - 你可以定义一个大致匹配立方体的盒子并测试它的触摸。无论如何,大多数人都希望在中间的某个地方触摸它。为了进行精确测试,您需要屏幕坐标,并测试每个多边形中的每个三角形以查看它是否包含位置。谷歌出现a nice explanation所需的数学数据。在OpenGL案例中,您必须手动重复OpenGL执行的计算,以找出屏幕上多边形结束的位置。