cocos2d-x与lua用法整理
来源:互联网 发布:linux下常用软件 编辑:程序博客网 时间:2024/04/27 17:02
Cocos2d-x 2.20以上版本没有了创建模板,创建的方式改用了Python创建,方法如下:
python create_project.py -project HelloWorld -package com.Panda.Game -language cpp
若要创建lua工程,结尾的cpp改成lua
然后创建出来的sln工程文件打开来,直接运行会发现已经是个成品了,有画面有音效有动画= =
工程的Resource文件夹下已经有一堆资源和脚本,AppDelegate的applicationDidFinishLaunching函数下已经写了脚本调用的代码了。想自己动手的可以从CCLuaEngine* pEngine = CCLuaEngine::defaultEngine();开始删掉,并运行自己的scene:
pDirector->runWithScene(HelloLua::scene());
然后以下内容整理自木头的博客(http://blog.csdn.net/musicvs/article/details/8440707)和书籍(《cocos2d-x游戏开发之旅》)。感谢作者!
主要是理解C++和lua只能通过堆栈通信,理解lua堆栈的一些解析过程。
HelloLua.lua脚本如下:
myName = "PandaWu"
helloTable = {name = "Panda", IQ = 129}
function helloAdd(num1, num2, num3)
return (num1 + num2 + num3)
end
初始化,打开lua文件,设置堆栈指针:
lua_State* pL = lua_open();
luaopen_base(pL);
luaopen_math(pL);
luaopen_string(pL);
int err = luaL_dofile(pL, "HelloLua.lua");
CCLOG("open: %d", err);
lua_settop(pL, 0);
取myName变量:
lua_getglobal(pL, "myName");
int isstr = lua_isstring(pL, 1);
CCLOG("isstr = %d", isstr);
if (isstr != 0)
{
const char* str = lua_tostring(pL, 1);
CCLOG("get string %s", str);
}
取table中name和IQ:
lua_getglobal(pL, "helloTable");
lua_pushstring(pL, "name");
lua_gettable(pL, -2);
const char* name = lua_tostring(pL, -1);
CCLOG("%s", name);
lua_getglobal(pL, "helloTable");//这句还得写
lua_pushstring(pL, "IQ");//还是pushstring
lua_gettable(pL, -2);
int IQ = lua_tonumber(pL, -1);
CCLOG("%d", IQ);
调用lua中的helloAdd:
lua_getglobal(pL, "helloAdd");
lua_pushnumber(pL, 10);
lua_pushnumber(pL, 5);
lua_pushnumber(pL, 3);
lua_call(pL, 3, 1);//参数数量和返回值数量
int result = lua_tonumber(pL, -1);
CCLOG("result = %d", result);
最后:lua_close(pL);
- cocos2d-x与lua用法整理
- cocos2d-x 与 lua
- cocos2d-x 与lua 通讯
- cocos2d-x lua与sqlite3
- Cocos2d-x中Lua与C++通信
- cocos2d-x lua与c++简单交互
- cocos2d-x lua与jni层互调记录
- Cocos2d-x Lua action
- cocos2d-x嵌入lua
- cocos2d-x lua开发
- Cocos2d-x lua 触屏
- cocos2d-x lua
- cocos2d-x lua 定时器
- cocos2d-x +lua
- cocos2d-x lua physics
- cocos2d-x lua LuaJavaBridge
- cocos2d-x Lua
- Cocos2d-x Lua 初步
- 【python】TCP包发送十六进制数据
- CRM2011资源管理器之复制实体或批量创建实体属性
- java 文件和文件夹的压缩实现
- 100多个Android Demo的整合
- JS图片无缝滚动
- cocos2d-x与lua用法整理
- Python 构造函数、 Python 析构函数、Python 垃圾回收机制
- C或C++如何实现基于CAN的SAE J1939协议??
- 关于安装解压版(zip)的Tomcat
- Objective-C中的@property和@synthesize用法
- Zond 265使用教程
- 零缺陷编程读书笔记(八)自己设计并使用断言(6)
- vmware linux系统不能全屏的问题
- 初学者 第一个安卓应用详解 eclipse helloworld