我正在修改现有程序以实现新工具栏。该程序使用Lua脚本来处理Flash动画和命令的显示和处理。我可以调用Flash动画窗口,但是添加命令监听器的行会失败。
HUD.AddFSCommandListener(self.file_SWF,self.id)
错误是:“错误的参数类型。函数HUD.AddFSCommandListener(movie,entityId)期望参数2类型为Pointer(提供类型为空)”。
我已经过了整个系统,在整个系统中,我无法弄清楚我做错了什么,虽然我怀疑有某种注册步骤我做错了。我正在研究的游戏使用CryEngine,我发现很多人都没有问过这个问题。但是,如果这个错误在另一个系统中有某种模拟,那么这可能会引起我的注意,我需要做什么。
感谢。
答案 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推送到最可能期望的自身参数中。