2015-03-31 98 views
0

在我未来的游戏(SpriteKit)中,我需要绘制圆形的图形。我使用CGMutablePathRefSKShapeNode进行绘制。检测SKShapedNode已关闭

touchesEnded我需要检查用户是否确实关闭了圆圈或者开始和结束触摸之间是否存在间隙。 (严格地说,它不仅可以是正确的圆圈,我需要检测任何闭合的形状,例如循环...)

我该如何检查?

+0

CGPath没有“相交”功能,因此没有简单的内置方法来检查。 – sangony 2015-03-31 12:43:12

回答

0
  1. 存放在阵列中的触摸位置(点):(?!大小你的选择是,更精确更小)[yourArray addObject:[NSValue valueWithCGPoint:yourPoint]];
  2. 做一个矩形围绕着数组中的第一点(第一触摸位置)。
  3. 控制矩形是否还包含数组中的最后一个点(最后一个触摸位置)。
  4. 如果是这样,那么关闭你的路径。
+0

存储触摸点并不是一个准确的方法。移动的触摸位置从一个点跳到另一个点,其间有间隙。这意味着你可以跨越一条线,而不是在你的数组中有相同的存储点。 – sangony 2015-03-31 12:48:08

+0

我同意,这种方法失去了一些循环制造的实例,而不是一个圆圈。但就目前而言,这是我拥有的最好的产品,它使我能够做到我需要的东西。谢谢! – Evgeniy 2015-03-31 13:05:09

+0

为什么在一个数组中划分触点不是精确的方法? http://www.raywenderlich.com/61289/how-to-make-a-line-drawing-game-with-sprite-kit除此之外,答案是,要控制,如果围绕第一点的矩形也包含最后一个接触点。如果是这样,那么路径可以关闭。 – suyama 2015-03-31 13:08:28