【问题标题】:How to split an image into polygons如何将图像分割成多边形
【发布时间】:2020-07-16 19:39:01
【问题描述】:

类似于一些在点击时用选定颜色填充特定区域的着色应用程序,我想将 png 图像转换为可以点击以执行特定操作的多边形。下面发布了一张示例图片。

对于这个例子,我想实现将图像划分为区域 1、2、3 和 4 的逻辑(不一定按此顺序),因此当用户点击左上角的矩形 action1 时,右上角的矩形action2,椭圆动作,其余的action3被执行。

有谁知道如何使用 SpriteKit 做到这一点?

【问题讨论】:

    标签: ios swift sprite-kit


    【解决方案1】:

    您不需要将图像分割成多个区域。将点击手势识别器附加到您的图像视图。

    在轻击手势识别器的动作中,获取轻击的坐标并确定它落入哪个区域。

    矩形区域真的很容易。您只需查看坐标是否在矩形的 x/y 范围内。

    对于更复杂的形状,您可以创建UIBezierPath 形状并使用UIBezierPath contains(_:) 方法查看点击点是否落在特定路径中。

    构建代码的最简单方法是一个结构数组,每个结构都包含一个UIBezierPath 和一个闭包,如果点击位于该路径中则调用该闭包。然后,当点击落在其中一个路径中时,您可以调用闭包。

    【讨论】:

    • 但是如何提前知道哪个区域被点击了而不事先将图像分割成区域?
    • 我一步一步地解释了。点击进入父视图。该视图(可能是 UIView 的自定义子类)具有查看点击坐标、搜索其路径数组并选择包含点击的路径的代码。
    • 谢谢,我试试看。我认为它适用于图像已经被分割到区域的情况。
    • 如果您将图像拆分为多个区域,您可以使用它自己的点击手势识别器将每个区域设为单独的图像视图,但这只会处理矩形点击区域。对于不规则形状,您必须使用不同的方法,例如贝塞尔路径和 contains(_:) 函数。
    • 我已经做了我在回答中描述的事情,我知道它们有效。
    猜你喜欢
    • 1970-01-01
    • 2020-02-08
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    相关资源
    最近更新 更多