cocococos 2 d-xにLUAを使う

12162 ワード

cocococos 2 d-xにLUAを使う
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);