与CALayers对齐

时间:2011-08-28 09:09:38

标签: calayer snapping

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

我认为这样做的方法是:

  1. 获取正在移动的图层的位置;
  2. 获取重叠图层或移动图层附近的图层;
  3. 在(2)为真的多边形的每一边,我需要检查移动层的侧面和层的侧面之间的最大距离(与层的侧面成直角) “near”(当图层重叠时,这是一个负值)。
  4. 相应地移动图层。
  5. 我不知道这是否是正确的做法。我想到的第一件事就是:

    • 如果我可以在多个方面“啪”一声,会发生什么?

    而且,即使我这样做,我也不知道如何处理(2)和(3)。

    有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

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

正确的碰撞很困难。而是尝试使用您要捕捉的形状测试鼠标/触摸的位置。

您可以通过检查鼠标位置处每个可能的捕捉图层的透明度来执行此操作。有关如何执行此操作的信息,请参阅this question

更难但更好的结果:

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