比方说

-我有一个按钮,可监听“ tap”事件,并指向执行某项功能的函数。

-我放置了一个覆盖按钮的ImageRact。一层以上。

当我单击按钮位于其上方区域上方的封面图像时,事件功能仍将执行。

如何避免这种情况?

例:

local function hidebg()

    display.remove(logo3)
    logo3=nil
end

local logo2= display.newImage("logo.png")
logo2.x=display.contentCenterX
logo2.y=280
logo2.width=200
logo2.height=74
logo2:addEventListener("tap", hidebg)

local cover =display.newImageRect("NEW GAME A.png", 480,320)
cover.x=display.contentCenterX/2
cover.y=display.contentCenterY/2


尽管“ logo2”被“ cover”图像覆盖,hidebg()函数仍然执行。

我知道我可以使按钮isVisible = false并解决问题,但是我在不同层的不同组中有数十个按钮,我想知道如何以一种聪明的方式做到这一点。也许以某种方式禁用整个组?我不知道。

最佳答案

您可以通过两种方法在项目中禁用该按钮。

1)只需如下创建coverreturn true的侦听器:

function coverPressed()
    return true;
end
cover:addEventListener("tap",coverPressed)


2)检查cover是否存在,然后将logo2的侦听器删除为:

logo2:removeEventListener("tap", hidebg)


保持编码............😃

10-08 09:01