我正在尝试使用以下代码将事件侦听器添加到半透明黑色背景中,该背景调用cancel方法:
blackRect = display.newRect(display.contentWidth/2,
display.contentHeight/2,
display.contentWidth,
display.contentHeight)
blackRect:setFillColor(0)
blackRect.alpha = 0.9
local function cancel( ... )
if blackRect then
blackRect:removeSelf()
blackRect = nil
end
if yesBtn then
yesBtn:removeSelf()
yesBtn = nil
end
if cancelBtn then
cancelBtn:removeSelf()
cancelBtn = nil
end
if getCoinsBtn then
getCoinsBtn:removeSelf()
getCoinsBtn = nil
end
if notEnoughCoins then
notEnoughCoins:removeSelf()
notEnoughCoins = nil
end
-- Body
end
blackRect:addEventListener("tap", cancel)
blackRect:addEventListener("touch", cancel)
然而,当我调用addEventListener
时,或者至少是它的样子时,会调用取消方法,因为blackRect
甚至没有显示在屏幕上,其他对象也没有显示在上面的代码之后创建的。
答案 0 :(得分:0)
你的问题有点令人困惑。你说当我调用addEventListener"时正在调用"方法取消。它实际上是有意义的被调用。你的意思是"没有被称为"?
我测试了代码的简化版本并且工作正常:
local blackRect = display.newRect(display.contentWidth/2,
display.contentHeight/2,
display.contentWidth,
display.contentHeight)
blackRect:setFillColor(0)
blackRect.alpha = 0.9
local function cancel()
print("executing cancel")
if blackRect then
print("removing blackRect")
blackRect:removeSelf()
blackRect=nil
end
end
blackRect:addEventListener("tap", cancel)
blackRect:addEventListener("touch", cancel)
当我点击blackRect框时,会激活EventListener并删除该对象。我添加了几个打印语句,有助于在控制台中看到它实际到达那里。