尝试索引本地变量'on'(一个空值)。

我看不出为什么会出现错误。我刚开始学习编程,所以可能会有些尴尬。这是一个可重复使用的按钮程序,让我感到困扰的是在第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
点赞
用户258523
用户258523

假设您在第12行的意思是on.alpha = 0,这意味着问题在于前一行的函数调用local on = display.newImageRect("onIMG", 100, 100)没有返回您期望的值,而是返回了nil。我怀疑这是因为您将字符串"onIMG"作为第一个参数传递,而不是像您想要的那样传递变量onIMG作为第一个参数。

尝试local on = display.newImageRect (onIMG,100, 100),并对上面的offIMG行进行类似的更改,看看是否有帮助。

2013-12-30 15:55:28