尝试索引一个空值的upvalue。

错误“尝试索引含有upvalue 'askUser'的nil值”时常显示,我不得不将语句变成注释才能运行应用程序,怎样修复?

function restartLvl()
    for i = 1, #balloonTexts do
        display.remove(balloonTexts[i])
        print("restart level")
    end
    score.text = '0'
    ballRemain.text = '3'
    balloonTexts = {}
    createBalloons(1, 3)
    if (askUser.isVisible == true) then --这里出现了错误
        askUser.isVisible = false
    end
    if (yesBtn.isVisible == true) then
        yesBtn.isVisible = false
    end
    if (noBtn.isVisible == true) then
        noBtn.isVisible = false
    end

    print("time from start: ", (system.getTimer()-gameTime))
    print("send mail")
    sendMail()
    restartBtn:removeEventListener("tap", restartLvl)

end
点赞
用户107090
用户107090

这条信息告诉你 askUser 是在 restartLvl 外定义的局部变量,而 askUser 是 nil,因此无法被索引。

你需要找出为什么在不期望的情况下 askUser 是 nil。

2014-03-12 12:33:36
用户3413390
用户3413390

你需要为 askUser.isVisible 赋值。

例子:

askUser = blablabla
askUser.x = blablabla
aksUser.y = bablabla

askUser.isVisible = false

group:insert(askUser)

PS:不知道有一个 isVisible 变量:P 我一直使用askUser.alpha = 0

2014-03-13 02:09:32
用户3131449
用户3131449

在将您的对象从视图中移除之前,请检查是否为 nil

例如

local try    --您正在使用的对象
if(try==nil)then
   --不做任何操作
else
   --在这里执行您想要的操作
end

在我的情况中,这段代码起作用了。

2014-03-14 08:03:00