Corona SDK(LUA) - 尝试调用语境外的 'spawnEnemy'(一个空值)

我试图为一个对象添加eventListener,当我点击它时应该消失。但是我得到了标题中提到的错误。这是我到目前为止的整个代码:

(以下为代码)

这就是错误窗口的样子:

(以下为图片)

我在这个领域(LUA编程)中有点新,所以可能会犯语法错误或者其他错误,但是我看到的是这个错误出现在我写下这行代码后:enemy:addEventListener ( "tap", shipSmash )

点赞
用户1847592
用户1847592

local function spawnEnemy() 更改为 function spawnEnemy() ,因为这个变量已经在之前声明过了。是的,这是初学者常见的 Lua 陷阱。

2013-08-10 18:48:13
用户2226988
用户2226988

你已经两次将 spawnEnemy 声明为本地变量。这是允许的(第二个隐藏了第一个,无论第二个在什么范围内),但这不是你想要的。

你已经正确声明了本地变量,并在 showTitle 中引用它。要在稍后设置相同变量,请使用赋值语句,不要加上 local 前缀。你可以使用“匿名”函数语法为其分配函数定义:

spawnEnemy = function()
   ...
end

实际上,在 Lua 中,所有函数都是匿名的,因为它们只是值。但是,为了调试,将名称与函数关联起来很有帮助。在堆栈跟踪中,尽可能使用用于调用函数的变量名称。

2013-08-10 19:40:40