第9月第16天 tolua++ cocos2dx cocos2d-lua
1.
http://www.jianshu.com/p/1cdfc60da04f
2.lua c++
Lua访问C++类
现在,我们在Lua里面操作这个Student类。注意,我们绑定的每一个函数都需要一个student对象作为参数,这样使用有一点不太方便。
local s = cc.create()
cc.setName(s,"zilongshanren")
print(cc.getName(s))
cc.setAge(s,20)
print(cc.getAge(s))
cc.print(s)
最后,输出的结果为:
zilongshanren
20
My name is: zilongshanren, and my age is 20
提供Lua面向对象操作API
现在我们已经可以在Lua里面创建C++类的对象了,但是,我们最好是希望可以用Lua里面的面向对象的方式来访问。
local s = cc.create()
s:setName("zilongshanren")
s:setAge(20)
s:print()
而我们知道s:setName(xx)就等价于s.setName(s,xx),此时我们只需要给s提供一个metatable,并且给这个metatable设置一个key为”__index”,value等于它本身的metatable。最后,只需要把之前Student类的一些方法添加到这个metatable里面就可以了。
//入参 lua_to...(L,1) lua_to...(L,2)
int l_setName(lua_State* L)
{
Student **s = (Student**)lua_touserdata(L,1);//luaL_checkudata(L,1,"cc.Student");
luaL_argcheck(L, s != NULL, 1, "invalid user data");
luaL_checktype(L, 2, LUA_TSTRING);//luaL_checktype(L, -1, LUA_TSTRING);
std::string name = lua_tostring(L, 2);//lua_tostring(L, -1);
(*s)->setName(name);
return 0;
}
Student **s = (Student**)lua_newuserdata(L, sizeof(Student*)); // lua will manage Student** pointer
*s = new Student;
luaL_getmetatable(L, "cc.Student");
lua_setmetatable(L, -2);
http://www.tuicool.com/articles/YzUrQb2
https://github.com/groov0v/LuaCBind
3.cocos2d-lua
https://github.com/zcgg/douniu
https://github.com/mr-bogey/popstar
https://www.github.com/xiuzhifu/loogrpg/
https://github.com/search?p=3&q=-quick+%24QUICK_COCOS2DX_ROOT&type=Code&utf8=%E2%9C%93
https://github.com/rainswan/Brave
https://github.com/calorie/game01
export QUICK_COCOS2DX_ROOT=/Users/temp/Downloads/quick-cocos2d-x
第9月第16天 tolua++ cocos2dx cocos2d-lua的更多相关文章
- Cocos2d-x下Lua调用自定义C++类和函数的最佳实践[转]
Cocos2d-x下Lua调用C++这事之所以看起来这么复杂.网上所有的文档都没讲清楚,是因为存在5个层面的知识点: 1.在纯C环境下,把C函数注册进Lua环境,理解Lua和C之间可以互相调用的本质 ...
- cocos2dx lua binding ,cocos2dx 绑定lua测试
前面2篇分别简单介绍 手动bind C++ 类和lua:http://blog.csdn.net/chenee543216/article/details/12074771 使用tolua++简化工作 ...
- cocos2dx的lua绑定
一.cocos2dx对tolua++绑定的修正 A.c对lua回调函数的引用 在使用cocos2dx编写游戏时,我们经常会设置一些回调函数(时钟.菜单选择等).如果采用脚本方式编写游戏的话,这些回调函 ...
- 【转】Cocos2d-x下Lua调用自定义C++类和函数的最佳实践
转自:http://segmentfault.com/blog/hongliang/1190000000631630 关于cocos2d-x下Lua调用C++的文档看了不少,但没有一篇真正把这事给讲明 ...
- 《Cocos2d-x实战 Lua卷》上线了
感谢大家一直以来的支持!各大商店均开始销售:京东:http://item.jd.com/11659697.html当当:http://product.dangdang.com/23659810.htm ...
- Learning Lua Programming (4) Cocos2d-x中Lua编程(一)
刚开始接触cocos2d-x 下的Lua编程,主要参看了李华明大神的博客中的介绍,http://blog.csdn.net/xiaominghimi/article/category/1155088 ...
- 如何使用ZEROBRANE STUDIO远程调试COCOS2D-X的LUA脚本(转)
http://www.cocos2d-x.org/docs/manual/framework/native/v2/lua/lua-remote-debug-via-zerobrane/zh ZeroB ...
- 分析cocos2d-x的lua项目中的工具方法
在创建完cocos2d-x的lua项目后.打开项目的Resources中的extern.lua文件.里面有两个用于面向对象的方法.一个是用于克隆,一个是用于继承. 代码分析例如以下 --克隆一个对象 ...
- CC++初学者编程教程(16) 搭建Xcode cocos2dx开发环境
1.下载cocos2dx,也可以从共享目录复制 2.解压缩 3.进入目录 cd Desktop/cocos2d-x-2.2.0/tools/project-creator/ 4.创建项目 ./crea ...
随机推荐
- centos上部署mysql
本文记录整个安装的过程和跳进的坑,大家预祝我能从坑里爬出来吧 当前系统版本 开始我们的安装: 在安装之前查阅了部分资料,大体安装流程 yum -y install mysql yum -y insta ...
- Linux内核分析作业四
扒开系统调用的三层皮 一.用户态.内核态和中断 一般现代CPU都有几种不同的指令级别 在高级别执行级别下,代码可以执行特权指令,访问任意的物理地址,称之为内核态 在相应的低指令执行级别下,代码的掌控范 ...
- 《Linux内核分析》 第六节 进程的描述和进程的创建
<Linux内核分析> 第六节 进程的描述和进程的创建 20135307 张嘉琪 原创作品转载请注明出处 +<Linux内核分析>MOOC课程http://mooc.study ...
- 用IDEA开发简单的Servlet
最近学习java,主要是servlet相关的内容.IDEA和servlet之前都没有碰过,所以做了一下小实验,走了一些弯路:这里把一个完整的步骤写出来,加深一下印象. IDEA创建项目步骤 1. 在i ...
- 运行Maven时报错:No goals have been specified for this build
No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in t ...
- Xcode常见设置
1.设置主题和字体大小
- Docker(十八)-Docker配置DNS
Linux系统配置DNS的时候有一个问题,就是你在/ect/resolv.conf文件中添加上nameserver XXX.XXX.XXX.XXX的时候,当时是生效的,但是机器重启之后就失效了,所以我 ...
- mybatis之一对一关联
MapperAsso.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper ...
- 使用ajax异步上传文件或图片(配合php)
//html代码 <form enctype="multipart/form-data" id="upForm"> <input type=& ...
- Eclipse RCP学习资料
1.拥抱Eclipse RCP http://www.blogjava.net/youxia/category/17374.html 2.RCP工程下面自动生成了如下文件:Application.ja ...