Lua脚本无法识别self.id。

我正在修改一个现有的程序,以实现一个新的工具栏。该程序使用Lua脚本来处理Flash动画和命令的显示和处理。我可以调用Flash动画窗口,但添加命令侦听器的行失败了。

HUD.AddFSCommandListener(self.file_SWF, self.id)

错误是:“错误的参数类型。函数HUD.AddFSCommandListener(movie,entityId)期望参数2的类型为指针(提供的类型为null)”。

我已经翻遍了整个系统,但是我无法弄清楚我在做什么错误,尽管我怀疑我没有正确执行某种注册步骤。我正在开发的游戏使用CryEngine,我看到并没有很多人提出问题。然而,如果这个错误在另一个系统中有某种类比,那么也许这可能会激发我的思维,让我知道我需要做什么。

谢谢。

点赞
用户129171
用户129171

你的问题可能是需要实际执行以下操作:

HUD:AddFSCommandListener(self.file_SWF, self.id)

问题不在于它无法识别 self.id,而在于当你使用点符号调用时,你传递的第一个参数成为函数的自身参数(如果该函数是一个表函数)。 因此它正在寻找的第二个参数实际上是空的。

冒号函数表示法是隐式传递 self 变量的语法糖,其中 self 成为表格(在这种情况下为 HUD)。 大多数 Lua 接口因此会从第二个参数开始计数。 因此它所说的第二个参数实际上是第三个参数。

例如:

HUD = {}

function HUD:AddFSCommandListener(file, id)

end

实际上相当于这个:

HUD = {}

HUD.AddFSCommandListener = function(self, file, id)

end

因此,当你使用点而不是冒号调用时,你将 file_SWF 放入了它最有可能期望的自身参数中。

2012-10-31 13:29:15