Lua脚本不承认self.id

时间:2012-10-29 18:44:53

标签: lua cryengine

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

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

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

我已经过了整个系统,在整个系统中,我无法弄清楚我做错了什么,虽然我怀疑有某种注册步骤我做错了。我正在研究的游戏使用CryEngine,我发现很多人都没有问过这个问题。但是,如果这个错误在另一个系统中有某种模拟,那么这可能会引起我的注意,我需要做什么。

感谢。

1 个答案:

答案 0 :(得分:0)

您的问题可能需要实际执行

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

问题不是它没有识别self.id,而是当你使用点表示法调用时,你传递的第一个参数成为函数的'self'参数,如果该函数是一个表函数。所以它正在寻找的第二个参数实际上是零。

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

示例:

HUD = {}

function HUD:AddFSCommandListener(file, id)

end

实际上相当于:

HUD = {}

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

end

因此,当您使用点而不是冒号调用时,可以将file_swf推送到最可能期望的自身参数中。