2011-12-25 5 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)) 

あなたはより具体的にそれを自分で行うことができなかったと言うものは何もありません。あなたがにLuaの関数を登録するグローバルテーブルPNを持っている場合は

、あなたは、次の操作を行いますスタックに

  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

関連する問題