在Lua中使用自定义类——tolua++工具使用(上集)
笨木头花心贡献,啥?花心?不呢,是用心~
转载请注明,原文地址:http://www.jb51.cc/article/p-pknidkgr-zw.html
正文:
最近看了一下TestLua的例子,挺有意思的,使用Lua对网游开发来说,很实用。我目前这个项目没有使用Lua等脚本,已经吃尽苦头了,每次客户端更新就流失好多玩家。虽然我的项目没有用cocos2d-x开发,但是因为最近在研究它,所以就好奇一下lua和cocos2d-x的整合。
百度没有多少资料,最实在的一篇教程应该就是Himi那篇了(高手一只,不解释)。所以只能靠自己了。
怎么运行Lua例子,以及在cocos2d-x里使用Lua的简单规则,请看之前我写的那篇教程,以及更加详细的Himi的教程(http://www.himigame.com/iphone-cocos2dx/681.html)。
这里我主要是想分享一下如何在lua中使用自己的类,其实cocos2d-x已经提供工具,并且封装好了c++整合lua。
好,废话说多了,开始~!
1.只关注LuaCocos2d.cpp文件
假设看这篇文章的朋友已经了解了LuaCocos2d.cpp的大概作用(不了解的,可以看看上面推荐的那篇Himi的文章),我们知道,要在lua使用cocos2d-x里的类,就首先要在LuaCocos2d.cpp里“声明”,此声明非彼声明哈,但是比较贴切。反正就是要在这个LuaCocos2d.cpp里做文章就是了。虽然这个cpp文件很庞大,但是都是一些重复的东西,形如:
- tolua_cclass(tolua_S,"CCActionEase","CCActionInterval",NULL);
- tolua_beginmodule(tolua_S,"CCActionEase");
- tolua_function(tolua_S,"copyWithZone",tolua_Cocos2d_CCActionEase_copyWithZone00);
- tolua_function(tolua_S,"reverse",tolua_Cocos2d_CCActionEase_reverse00);
- "create",tolua_Cocos2d_CCActionEase_create00);
- tolua_endmodule(tolua_S);
这些操作就像是在向程序注册我们的类,让这些类可以在lua中使用。
2.真正想知道的事情是,除了cocos2d-x的类,我们可以在lua中使用自己的类吗?
当然可以了,就算不是在cocos2d-x引擎里,本身lua就可以在c++中互相调用的(当然,Java也可以)。只是,既然cocos2d-x帮我们封装好了,我们就用它提供的方法来使用lua吧。
首先,我第一时间会想到,在LuaCocos2d.cpp中依葫芦画瓢,把自己的类加进去就好了。当然,我也是这么想的,但是在添加的过程中碰了钉子,很多规则不太清楚,总是有些错误。后来。。。
3.tolua++.exe工具
后来我发现了cocos2d-x竟然提供了这个工具,这是十分难发现的,隐藏得很深的,没有任何提示的,我竟然能发现它,噗。
(我才不会告诉你们LuaCocos2d.cpp文件的顶部有注释,并且注释已经告诉我们有这个工具的)
- /*
- **Luabinding:Cocos2d
- **Generatedautomaticallybytolua++-1.0.92on08/30/1212:11:53.
- */