我不明白为什么这会给我一个错误。我开始编程所以它可能是如此令人尴尬。这是一个可重复使用的按钮让我很难过。在第12行,我尝试更改on alpha ii给出了错误。
local Button = {}
Button.new = function(params)
local btn = display.newGroup()
local offIMG = params and params.off or "off.png"
local onIMG = params and params.on or "on.png"
local off = display.newImageRect("offIMG", 64, 70)
local on = display.newImageRect("onIMG", 100, 100)
on.alpha = 0
btn:insert(off)
btn:insert(on)
btn.x = params and params.x or 0
btn.y = params and params.y or 0
function btn:touch(e)
if(e.phase=="began")then
on.alpha = 1
display.getCurrentStage():setfocus(self)
self.hasFocus = true
elseif (self.hasFocus) then
if(e.phase=="ended")then
on.alpha = 0
display.getCurrentStage():setfocus(self)
setfocus(nil)
end
end
end
btn:addEventListener("touch",btn)
return btn
end
local button1= Button.new()
button1.x = display.contentWidth * 0.5
button1.y = display.contentHeight * 0.5
答案 0 :(得分:4)
假设第12行你的意思是on.alpha = 0
,这意味着问题在于前一行local on = display.newImageRect("onIMG", 100, 100)
中的函数调用没有按预期返回值,而是返回nil
。我怀疑是这种情况,因为你传递字符串"onIMG"
作为第一个参数,而不是将变量onIMG
作为第一个参数传递,因为它似乎是你想要的。
尝试local on = display.newImageRect(onIMG, 100, 100)
以及上面offIMG
行的类似更改,看看是否有帮助。