cocococos 2 d-xにLUAを使う
12162 ワード
cocococos 2 d-xにLUAを使う
1、LUAスクリプトエンジンを登録する
1)、C++における全体的な方法を作成する
1)C++にC++のクラスを作成します.
5)LUAではC++のCTestオブジェクトを使用します.
1、LUAスクリプトエンジンを登録する
CCLuaEngine* pEngine = CCLuaEngine::defaultEngine();
CCScriptEngineManager::sharedManager()->setScriptEngine(pEngine);
2、LUA文字列の一部を実行するluaEngine->executeString("print(\"test executeString\\n\")");
3、LUAファイルを実行するluaEngine->executeScriptFile(CCFileUtils::sharedFileUtils()->fullPathFromRelativePath("hello.lua"));
4、LUAの中の一つの全体的な方法を実行するluaEngine->executeGlobalFunction("test"); // LUA test
// lua function
function test()
print("I'm lua function")
end
5、LUAのいずれかのパラメータ付き方法を実行し、戻り値を取得するlua_State* state = luaEngine->getLuaState();
lua_getglobal(state, "myadd"); // lua_add ,
luaEngine->pushInt(5); // 1
luaEngine->pushFloat(6.5); // 2
lua_pcall(state, 2, 1, 0); // myadd , myadd ,
float result = lua_tonumber(state, -1); //
lua_pop(state, 1); // ,
printf("result is %f
", result);
// lua function
function myadd(x, y)
return x + y
end
6、LUAでC++の一つのグローバル方法を実行する.1)、C++における全体的な方法を作成する
int add(lua_State* L)
{
int a = lua_tointeger(L, 1);
int b = lua_tointeger(L, 2);
lua_pushinteger(L, a + b); //
return 1; //1
}
2)、C++に登録する方法: lua_register(state, "lua_add", add); // LUA , C++
3)、LUAでの呼び出し方法:lua_add(2, 3);
7、LUAでC++の対象及び対象を呼び出す方法1)C++にC++のクラスを作成します.
#ifndef _HELLO_CLASS_CTEST_
#define _HELLO_CLASS_CTEST_
#include <iostream>
class CTest
{
public:
int v;
public:
CTest() { v = 1; }
CTest(int a) { v = a; }
void test()
{
printf("[CTest::test]hello,tolua++|(%d).
", this->v);
}
};
#endif
2)PKGファイルを作成する.// C/C++ , $#include "xxx.h"
// PKG , $pfile "xxx.pkg"
$#include "CTest.h"
class CTest
{
int v;
CTest();
CTest(int a);
void test();
};
3)、Tolua++を実行し、lua_を生成する.CTest.cppファイルtolua++ -n CTest -o lua_CTest.cpp CTest.pkg
4)作成したファイルをプロジェクトに追加します.5)LUAではC++のCTestオブジェクトを使用します.
tolua_CTest_open(state); // CTest tolua++ -n
std::string str = "t = CTest:new(); t:test();"; // LUA lua , lua 。
luaEngine->executeString(str.c_str());
// tolua_CTest_open , lua_CTest.cpp 。
// TOLUA_API int tolua_CTest_open (lua_State* tolua_S);