2011-12-25 75 views
2

我在我的iPhone遊戲實現中整合了Lua腳本,它工作的很棒!Lua腳本推送類功能PN.click()

出於純粹的美容原因,我想我在Lua中的函數採用PN.function()的格式。目前它們的格式是function()。

我試過註冊的功能,例如:

lua_register(lua, "PN.Color", Color); 

但它不會讓我把它在Lua中。

任何人有任何建議嗎?

謝謝!

回答我的問題!:

lua_newtable(lua); 
int pn = lua_gettop(lua); 

lua_pushstring(lua, "Click"); 
lua_pushcfunction(lua, Click); 
lua_settable(lua, pn); 

lua_pushstring(lua, "Release"); 
lua_pushcfunction(lua, Release); 
lua_settable(lua, pn); 

lua_setglobal(lua, "PN"); 

回答

1

不能使用.在Lua中的函數名稱。如果你試圖將所有的Lua函數放在一個名爲PN的全局表中,那麼你必須真正做到這一點。

記住:lua_register僅僅是一個宏:

#define lua_register(L,n,f) \ 
     (lua_pushcfunction(L, f), lua_setglobal(L, n)) 

有什麼,說你不能做自己更具體。

如果你有一個全局表PN要註冊Lua函數進入,您執行以下操作:

  1. PN表壓入堆棧,用lua_getfield(L, LUA_GLOBALSINDEX, "PN")
  2. 將您想要註冊的功能推入堆棧,使用lua_pushcfunction(L, Color)
  3. 將函數放入表中的適當位置,lua_setfield(L, -2, "Color")
  4. lua_pop(L, 1)從堆棧中彈出表格。
+0

謝謝!在我閱讀你的答案之前,我在幾分鐘之前設法弄清了這一點,所以謝謝你! – pantaryl 2011-12-25 03:26:03