2

我正在使用该-mouseDragged方法移动一些 CALayer,现在我想在它们足够近时(或者当它们重叠一点时)“捕捉”它们。每一层都不是“正方形”:我正在绘制不同的多边形。

我认为这样做的一种方法是:

  1. 获取被移动层的位置;
  2. 获取重叠层或靠近被移动层的层;
  3. 在(2)为真的多边形的每一侧,我需要检查移动层的一侧和“接近”的层的一侧之间的最大距离(与图层的一侧成直角) (当图层重叠时,这是一个负值)。
  4. 相应地移动图层。

我不知道这是否是正确的方法。我首先想到的是:

  • 如果我可以“捕捉”不止一侧会发生什么?

而且,即使我尝试这种方式,我也不知道如何处理(2)和(3)。

有没有更好的方法来做到这一点?

4

1 回答 1

0

这并不容易。因为 CALayers 不是矢量图形,所以您必须处理任何可能的形状(例如,龙的图片。)

适当的碰撞是困难的。而是尝试使用您想要捕捉到的形状来测试鼠标/触摸的位置。

您可以通过在鼠标位置检查每个可能的捕捉层的透明度来做到这一点。有关如何执行此操作的信息,请参阅此问题。

更困难但更好的结果:

使用像Chipmunk或 Box2D 这样的 2D 物理引擎来进行碰撞检测。

于 2011-09-05T23:30:04.030 回答