Button 如何从Corona中的按钮小部件中删除OneEvent?
我正在尝试从按钮小部件中删除OneEvent侦听器。我尝试将nil分配给onEvent属性,但没有成功,最后我尝试了以下方法:Button 如何从Corona中的按钮小部件中删除OneEvent?,button,lua,widget,coronasdk,Button,Lua,Widget,Coronasdk,我正在尝试从按钮小部件中删除OneEvent侦听器。我尝试将nil分配给onEvent属性,但没有成功,最后我尝试了以下方法: buttonWidget : removeEventListener("touch", buttonWidget.onEvent) 我有几个这样的按钮,它只是停止了所有按钮的事件监听器。你有什么建议?如何删除单键小部件的事件侦听器?谢谢 以下是我如何创建我的按钮小部件: for i=0,2 do for j=0,8 do count=count+1
buttonWidget : removeEventListener("touch", buttonWidget.onEvent)
我有几个这样的按钮,它只是停止了所有按钮的事件监听器。你有什么建议?如何删除单键小部件的事件侦听器?谢谢
以下是我如何创建我的按钮小部件:
for i=0,2 do
for j=0,8 do
count=count+1
letterBtn[count] = widget.newButton{
id = alphabet[count],
left = 5+j*50,
top = H-160+i*50,
label = alphabet[count],
width = 45,
height = 45,
font = nil,
fontSize = 18,
labelColor = { default = {0,0,0}, over = {255,255,255}},
onEvent = btnOnEventHandler
};
end
end
您能告诉我以后如何删除onEvent吗
好的,我尝试了Button:setEnabled(false),但它仍然禁用了所有按钮,而不仅仅是一个按钮。我已经试过你的第二个建议了,但结果是一样的。我正在复制代码的其余部分。你能看看它,告诉我我错过了什么吗
local function checkLetter(e)
if(guessWord) then
for i=1, #guessWord do
local c = guessWord:sub(i,i)
if c==e.target.id then
letter[i].text = e.target.id
letterCount = letterCount +1
print("letterCount"..letterCount)
e.target:setEnabled(false)
end
end
if (letterCount == #guessWord and not hanged) then
timer.performWithDelay(500, function()
letterCount=0
rightWGuess = rightWGuess+1
for k,v in pairs(notGuessedWord) do
if v == guessWord then
notGuessedWord[k]=nil
end
end
enableButtons()
startGame() end ,1)
end
end
end
local function btnOnEventHandler(e)
if(e.phase == "began") then
checkLetter(e)
print(e.target.id)
end
return true
end
如果要暂时(或永久)停止按钮对触摸事件的响应,可以使用 下面是我从两个按钮中删除一个侦听器的方法。按钮1和3按预期停止响应事件,而按钮2、4和5仍按预期停止响应事件 更新:要禁用,您必须在“结束”阶段执行,否则会混淆
widget = require 'widget'
local function btnOnEventHandler(event)
print('Event', event.target.id, event.phase)
if event.phase == 'ended' then
-- Disable the button so it can't be clicked again
-- Must disable in the end state or Corona gets
-- confused
event.target:setEnabled(false)
end
end
local buttons = {}
for i=1,5 do
buttons[i] = widget.newButton{
id = 'button' .. i,
left = display.contentCenterX - 50,
top = 60 * i,
label = 'Button ' .. i,
width = 100,
height = 50,
onEvent = btnOnEventHandler
}
end
buttons[1]:removeEventListener('touch', buttons[1].onEvent)
buttons[3]:removeEventListener('touch', buttons[3].onEvent)
您能否提供一个更完整、可运行的示例,显示多个事件注册以及如何删除它们?您现在可以检查吗?我编辑了这个问题,我试过了,但是没有成功。你能再看看我编辑的问题吗?