2012-10-29 76 views
0

我正在修改現有程序以實現新的工具欄。該程序使用Lua腳本來處理Flash動畫和命令的顯示和處理。我可以調用Flash動畫窗口,但添加命令偵聽器的行失敗。Lua腳本無法識別self.id

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

的錯誤是: 「錯誤的參數類型功能HUD.AddFSCommandListener(電影,ENTITYID)期望類型的指針參數2(提供鍵入Null)」。 。

我已經完成了,系統內部和周圍,我不知道我做錯了什麼,雖然我懷疑有某種註冊步驟,我不正確做。我正在使用的遊戲使用CryEngine,並且我看到沒有很多人對此提出疑問。但是,如果這個錯誤在另一個系統中有某種模擬,那麼這可能會激發我的想法,以至於我需要做什麼。

謝謝。

+0

這裏是一個鏈接http://create.bluemars.com/wiki/index.php/HUD,它看起來像第一個參數應該是self.Hud.file_SWF? –

+0

訪問SWF文件不是問題。問題在於第二個參數。 Lua表中最初沒有包含「id」值,但對於程序中的所有Lua腳本都是如此。在初始化過程中的某個點,每個Lua表(實體)都會分配一個id號/值。我仍然試圖追蹤發生的地方,但在這一點上沒有取得成功。 – GordoFabulous

+0

這聽起來不是Lua實體沒有正確創建,或者由於某種原因它已經被垃圾收集。根據這個(http://www.crydev.net/wiki/index.php/Lua_API/Entity),每個Lua實體都有一個通過SpawnEntity()函數分配的唯一標識符。 –

回答

0

你的問題很可能是你需要做的其實

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到它最有可能的預期爲一個自我參數。

相關問題