0

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

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

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

我已经通过系统完成了,在下面和周围,我无法弄清楚我做错了什么,尽管我怀疑有某种注册步骤我没有正确执行。我正在开发的游戏使用了 CryEngine,我发现并没有很多人对此提出问题。然而,如果这个错误在另一个系统中有某种类似的东西,那么也许这可能会让我想到我需要做什么。

谢谢。

4

1 回答 1

0

您的问题很可能是您实际需要做的

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

问题不在于它无法识别 self.id,而是当您使用点表示法调用时,如果该函数本来是一个表函数,那么您传递的第一个参数将成为函数的“self”参数。所以它正在寻找的第二个参数实际上是 nil。

冒号函数符号是用于隐式传递 self 变量的语法糖,其中 self 成为表(在本例中为 HUD)。因此,大多数 lua 接口将从第二个参数开始计数。所以它所说的第二个实际上是第三个。

例子:

HUD = {}

function HUD:AddFSCommandListener(file, id)

end

实际上等价于:

HUD = {}

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

end

因此,当您使用点而不是冒号调用时,您会将 file_swf 推入它最可能期望的 self 参数中。

于 2012-10-31T13:29:15.017 回答