【问题标题】:Snapping with CALayers使用 CALayers 捕捉
【发布时间】:2011-08-28 09:09:38
【问题描述】:

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

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

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

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

  • 如果我可以“卡入”多个侧面会怎样?

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

有更好的方法吗?

【问题讨论】:

    标签: calayer snapping


    【解决方案1】:

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

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

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

    更难但更好的结果:

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

    【讨论】:

      猜你喜欢
      • 2018-10-30
      • 2017-07-15
      • 1970-01-01
      • 2012-03-03
      • 2021-07-10
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多