Corona/Lua 中的不同层

发布于 2024-11-09 18:43:13 字数 339 浏览 0 评论 0原文

我有一个关于使用 Corona/Lua 分层图像/按钮的问题。如果我在另一个按钮之上创建一个按钮然后单击它,则两个按钮的事件都会被触发。我该如何防止这种情况?

谢谢,Elliot Bonneville

编辑:这是我创建按钮的方法:

button1 = display.newImage("button1.png")
button1:addEventListener("tap", Button1Call)

button2 = display.newImage("button2.png")
button2:addEventListener("tap", Button2Call)

I've got a question about layering images/buttons with Corona/Lua. If I create one button on top of another one and then click it, both buttons' events are triggered. How do I prevent this?

Thanks, Elliot Bonneville

EDIT: Here's how I create the buttons:

button1 = display.newImage("button1.png")
button1:addEventListener("tap", Button1Call)

button2 = display.newImage("button2.png")
button2:addEventListener("tap", Button2Call)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

御守 2024-11-16 18:43:13

从事件处理函数返回 true。触摸事件不断通过监听器传播,直到被处理;此处解释:

http://developer.anscamobile.com/content/events-and -listeners#Touch_Events

请注意,事件侦听器必须侦听同一事件。换句话说,两个侦听器必须设置为“触摸”或“点击”。昨晚我确实被这个绊倒了;我有一个按钮在听“触摸”,顶部的另一个图像在听“点击”,我想知道为什么该按钮仍在接收事件。

Return true from the event handling function. Touch events keep propagating through the listeners until handled; it's explained here:

http://developer.anscamobile.com/content/events-and-listeners#Touch_Events

Note that the event listeners must be listening for the same event. In other words, both listeners must be set on either "touch" or "tap". Literally last night I was tripped up by this; I had a button listening to "touch" and another image on top listening to "tap" and was wondering why the button was still receiving events.

难忘№最初的完美 2024-11-16 18:43:13

在处理事件的事件处理程序中使用 return true 以防止进一步的事件传播。

因此,在您的示例中,button2 将首先获取事件,因为它是最后创建的。如果您在 Button2Call 中处理该事件并返回 true,则 Button1Call 将根本看不到该事件。如果您返回 false,或者干脆省略 return 语句,Button1Call 将获取事件并决定是否处理该事件。

Use return true in the event handler where you handle the event to prevent further event propagation.

So, in your example, button2 will get the event first, since it's created last. If you handle the event in Button2Call andreturn true, Button1Call won't see the event at all. If you return false, or simply leave out the return statement altogether, Button1Call will get the event and can decide whether to handle it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文