正在做一个应用程序,当我运行代码时,出现了以下显示:`main.lua`:290:试图索引字段(一个空值)

我正在制作一个应用程序,在运行代码的时候,这个错误显示出来了: main.lua: 290: 尝试索引字段(一个空值)

function check()
print('check game over')
    for i = 1, Balls.numChildren do
print(i)
        if (Balls[i].y > display.contentHeight) then -- LINE 290
            display.remove(Balls[i])
            Balls[i] = nil

            if (tonumber(ballRemain.text) <= 0) then
                alert('lose')
            end
        end
    end
end

我多次检查,但仍然找不到问题所在。有人告诉我可能是因为我没有删除事件侦听器,但我不确定。有人有任何想法吗?

点赞
用户2226988
用户2226988

check 看起来像是被多次调用的函数。它可以将 Balls[i] 设置为任意值的 nil。可以认为 Balls 有多个插槽,可能包含或不包含对象。因此,请更改第 290 行代码,检查插槽是否被占用,再尝试进行对象操作:

if (Balls[i] and Balls[i].y > display.contentHeight) then -- LINE 290
2014-02-13 19:18:54
用户3305142
用户3305142

尝试在Corona模拟器上进行打印并且查看输出结果:

Check game over
1
2
Check game over
1
2

然后继续输出,直到出现运行时错误main.lua: 290:尝试为nil值的字段添加索引。

2014-02-14 06:01:30