在cocos2d-x中使用LUA

在cocos2d-x中使用LUA,第1张

概述在cocos2d-x中使用LUA 1、注冊LUA脚本引擎 CCLuaEngine* pEngine = CCLuaEngine::defaultEngine();CCScriptEngineManager::sharedManager()->setScriptEngine(pEngine); 2、运行一段LUA字符串 luaEngine->executeString("print(\"test 在cocos2d-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 functionfunction 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);	//函数參数2lua_pcall(state, 2,153);">1,153);">0);	//调用myadd函数,同一时候会对myadd及两个參加进行出栈 *** 作,并压入返回值float result = lua_tonumber(state, -1);	//从栈中取回返回值 lua_pop(state,88);Font-style:italic;">//清栈,因为当前仅仅有一个返回值 printf("result is %f\n", result);// lua functionfunction myadd(x, y)    return x + yend
6、在LUA中运行C++中的一个全局方法

1)、编写C++中的全局方法

int add(lua_State* L){    int a = lua_tointeger(L,153);">1);    int b = lua_tointeger(L,153);">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++的类。

@H_858_403@#ifndef _HELLO_CLASS_CTEST_@H_858_403@#define _HELLO_CLASS_CTEST_@H_858_403@#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);	}};@H_858_403@#endif

2)、编写PKG文件。

// 假设要包括C/C++的头文件。使用 $#include "xxx.h"// 假设要包括其他的PKG文件。使用 $pfile "xxx.pkg"@H_269_502@$#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)、将生成的文件增加到project。

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);
总结

以上是内存溢出为你收集整理的在cocos2d-x中使用LUA全部内容,希望文章能够帮你解决在cocos2d-x中使用LUA所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/999989.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-21
下一篇2022-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存