Events 如何使用任意形状的图形制作按钮(Corona SDK)?

Events 如何使用任意形状的图形制作按钮(Corona SDK)?,events,button,touch,coronasdk,Events,Button,Touch,Coronasdk,我在游戏中有一座山的轮廓,需要Corona能够区分用户按下山上的触摸事件和按下山峰之间的山谷,alpha通道用于创建形状。从这个意义上讲,科罗纳似乎将一个显示对象视为一个矩形,因此我的需求无法通过我找到的任何方式得到满足 不过,Corona physics功能允许您创建复杂的多边形来模拟碰撞处理的任意形状,但我没有发现类似的按钮方法 有什么想法吗 这不是自动的,但这里有一个解决方案,您可以尝试一下,它包括一些设置和代码。应该不会太难 通过检查event.x和event.y参数,测试触摸在事件侦听

我在游戏中有一座山的轮廓,需要Corona能够区分用户按下山上的触摸事件和按下山峰之间的山谷,alpha通道用于创建形状。从这个意义上讲,科罗纳似乎将一个显示对象视为一个矩形,因此我的需求无法通过我找到的任何方式得到满足

不过,Corona physics功能允许您创建复杂的多边形来模拟碰撞处理的任意形状,但我没有发现类似的按钮方法


有什么想法吗

这不是自动的,但这里有一个解决方案,您可以尝试一下,它包括一些设置和代码。应该不会太难

通过检查event.x和event.y参数,测试触摸在事件侦听器中的位置。您可以通过创建一个表来提高效率,该表中的每一条都有最左边的x值和最右边的x值,比如从对象的顶部到底部的10个像素。例如,考虑这座山:

使用每个浅蓝色矩形底部的y坐标作为表中的索引,并将左x和右y值加载到该条目中,例如:

hitTable[120] = {245,260}
hitTable[130] = {230,275}
等等

然后,在touch事件侦听器中,强制将event.y参数设置为一个表索引,可以使用函数,也可以只测试它最接近的索引。然后,使用该表项,查看event.x是否在为该y坐标指定的x坐标之间。如果没有,请忽略触摸

您甚至可以构建表并将其指定为图像本身的属性,如下所示:

hitTable = {}
hitTable[120] = {245,260}
hitTable[130] = {230,275}
... and so on, then ...
myMountain.hitTable = hitTable

完成此操作后,您可以在触摸事件侦听器中以event.target.hitTable的形式访问该表。

是否可以创建具有90度角尖端的山峰。然后,如果你把山峰分开,旋转45度,它们就会变成一个正方形。导出每一个后,将它们导入Corona,然后将它们向后旋转45度。我还没有测试过,但我想它可能会起作用:

谢谢JeffK的建议。然而,我希望避免这样的解决方案,因为这将意味着手工创建表。我的目的是在我的应用程序中,沿着40条山脉的某个地方,比如上面的那条,有一个相当大的尺寸。我担心这可能是Ansca的另一个功能请求。但我肯定他们以前听过,那可能行得通。但是,我需要平坦的部分以及平原/山脊,因此问题仍然存在。