cocos2d-x 3.0 在C++中调用lua函数(2)
2014-06-06 17:32
453 查看
个人觉得3.0里面, 在C++下面调用lua函数很不方便, 所以就扩展了一个类, 继承自LuaStack, 代码和使用方式如下:
View Code
其实就是把cocos2d::LuaEngine::getInstance()->getLuaStack()获取到的LuaStack指针强行改成它的子类LuaStackEx的指针, 然后用这个指针来调用我写的一些方法, 但是它的内部创建的还是LuaStack对象, 而且我也没有改成创建LuaStackEx对象, 因为LuaStackEx这个自定义类中没有定义自己的数据成员, 用到的数据成员都是基类的! 嘿嘿.
当然了, 这个仅限于自己使用, 有一些缺点, 比如不能获取lua函数的返回值, 我也没这个需求.
还有就是要注意一点, 传入自己定义的数据对象时要取它的地址! 转换成void*, 然后在lua中再改成相关对象使用. 如果是同步对象直接取地址调用没问题, 如果是异步调用的话, 那就要new出对象, 把地址传进去, 这些东东已经不属于使用这个扩展类要注意的事项啦!
好啦, 这回真正的方便使用了, 呵呵
对了, 要把这两个文件放到工程liblua下面, 把liblua重新生成一下.像这样.
cocos2d::LuaStackEx* luaStack = static_cast<cocos2d::LuaStackEx*>(cocos2d::LuaEngine::getInstance()->getLuaStack()); luaStack->call_script_fun("common_progrss_message", "kukudi", 27, std::string("man"));
View Code
其实就是把cocos2d::LuaEngine::getInstance()->getLuaStack()获取到的LuaStack指针强行改成它的子类LuaStackEx的指针, 然后用这个指针来调用我写的一些方法, 但是它的内部创建的还是LuaStack对象, 而且我也没有改成创建LuaStackEx对象, 因为LuaStackEx这个自定义类中没有定义自己的数据成员, 用到的数据成员都是基类的! 嘿嘿.
当然了, 这个仅限于自己使用, 有一些缺点, 比如不能获取lua函数的返回值, 我也没这个需求.
还有就是要注意一点, 传入自己定义的数据对象时要取它的地址! 转换成void*, 然后在lua中再改成相关对象使用. 如果是同步对象直接取地址调用没问题, 如果是异步调用的话, 那就要new出对象, 把地址传进去, 这些东东已经不属于使用这个扩展类要注意的事项啦!
好啦, 这回真正的方便使用了, 呵呵
对了, 要把这两个文件放到工程liblua下面, 把liblua重新生成一下.像这样.
相关文章推荐
- cocos2d-x 3.0 在C++中调用lua函数
- 【Cocos2d-x lua篇006】Lua调用C++的函数
- cocos2d-x下c++调用lua函数
- 【Cocos2d-x lua篇005】C++调用Lua的函数
- 【木头Cocos2d-x 030】Lua篇(第05章):C++调用Lua的函数
- 【木头Cocos2d-x 030】Lua篇(第05章):C++调用Lua的函数
- 【木头Cocos2d-x 031】Lua篇(第06章):Lua调用C++的函数
- 【木头Cocos2d-x 031】Lua篇(第06章):Lua调用C++的函数
- Cocos2d-x 浅谈Lua与C++函数间互相调用问题
- 【木头Cocos2d-x 031】Lua篇(第06章):Lua调用C++的函数
- 【木头Cocos2d-x 030】Lua篇(第05章):C++调用Lua的函数
- 【木头Cocos2d-x 031】Lua篇(第06章):Lua调用C++的函数
- [寒江孤叶丶的Cocos2d-x之旅_25]Cocos2d-x 浅谈Lua与C++函数间互相调用问题
- Lua调用c++函数
- lua调用C++函数崩溃时,查看lua的调用栈信息 (特别适用于tolua++)
- 069 - 问,lua程序设计(第四部分)笔记三,c++调用lua函数 - everettjf - C++博客
- Lua与C/C++的交互5:C/C++调用Lua函数
- C++保存和调用lua函数
- 解决c++ 调用lua 方式! 避免重复写逻辑对应的lua 函数
- C/C++中调用LUA函数