码迷,mamicode.com
首页 > 编程语言 > 详细

cocos2dx lua学习笔记 <一> quick 3.5把自定义C++类绑定到lua

时间:2015-06-27 16:40:25      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:cocos2dx   lua   

请尊重原创 转载请著名出处:http://blog.csdn.net/wushao126/article/details/46660375
首先去官网下载最新的quick,配置好环境,创建一个lua工程,命令 cocos new XXX(项目名称) -p com.xxxx.xxxx(包名) -l lua -d xxx(新建工程保存路径)

工程创建后,找到工程目录下的frameworks\runtime-src\Classes,创建一个c++类,我创建的类是

文件名:LuaBindingTest.h

#pragma once
class LuaBindingTest
{
public:
	LuaBindingTest();
	~LuaBindingTest();

	void add(long a,long b);
	void sub(int a, int b);
};


文件名:LuaBindingTest.cpp
#include "LuaBindingTest.h"
#include "cocos2d.h"
USING_NS_CC;

LuaBindingTest::LuaBindingTest()
{
}


LuaBindingTest::~LuaBindingTest()
{
}

void LuaBindingTest::sub(int a, int b)
{
	CCLOG("a - b = %d", a - b);
}

void LuaBindingTest::add(long a, long b)
{
	CCLOG("a + b = %ld", a + b);
}


之后在工程目录下的frameworks\cocos2d-x\tools\tolua文件夹中找到genbindings.py文件夹,备份一份,改名genbindings_binding_test.py,打开此文件,需要修改内容,定位大约在130行之后,找到内容类似

        tolua_root = '%s/tools/tolua' % project_root
        output_dir = '%s/../runtime-src/Classes/auto' % project_root

        cmd_args = {'myclass.ini' : ('myclass', 'lua_myclass_auto'),                     'cocos2dx_extension.ini' : ('cocos2dx_extension', 'lua_cocos2dx_extension_auto'),                     'cocos2dx_ui.ini' : ('cocos2dx_ui', 'lua_cocos2dx_ui_auto'),                     'cocos2dx_studio.ini' : ('cocos2dx_studio', 'lua_cocos2dx_studio_auto'),                     'cocos2dx_spine.ini' : ('cocos2dx_spine', 'lua_cocos2dx_spine_auto'),                     'cocos2dx_physics.ini' : ('cocos2dx_physics', 'lua_cocos2dx_physics_auto'),                     'cocos2dx_experimental_video.ini' : ('cocos2dx_experimental_video', 'lua_cocos2dx_experimental_video_auto'),                     'cocos2dx_experimental.ini' : ('cocos2dx_experimental', 'lua_cocos2dx_experimental_auto'),                     'cocos2dx_controller.ini' : ('cocos2dx_controller', 'lua_cocos2dx_controller_auto'),                     'cocos2dx_cocosbuilder.ini': ('cocos2dx_cocosbuilder', 'lua_cocos2dx_cocosbuilder_auto'),                     'cocos2dx_cocosdenshion.ini': ('cocos2dx_cocosdenshion', 'lua_cocos2dx_cocosdenshion_auto'),                     'cocos2dx_3d.ini': ('cocos2dx_3d', 'lua_cocos2dx_3d_auto'),                     'cocos2dx_audioengine.ini': ('cocos2dx_audioengine', 'lua_cocos2dx_audioengine_auto'),                     'cocos2dx_csloader.ini' : ('cocos2dx_csloader', 'lua_cocos2dx_csloader_auto'),                     }
tolua_root 就是ini文件所在目录,过会我们就要在这个目录下创建我们的ini文件。

output_dir 是我们要生成的目标文件所在的文件目录,我把这个修改在classes目录下auto

这是我修改后的文件内容

        tolua_root = '%s/tools/tolua' % project_root
        output_dir = '%s/../runtime-src/Classes/auto' % project_root

        cmd_args = {'myclass.ini' : ('myclass', 'lua_myclass_auto'),                     }

myclass.ini就是接下来要创建的ini文件

随便复制一个ini文件,改名为myclass.ini,打开文件,修改几个参数即可

prefix = myclass   

target_namespace =   (空 表示没有)

headers = %(cocosdir)s/../runtime-src/Classes/LuaBindingTest.h  (需要绑定c++类的头文件路径)

classes = LuaBindingTest (类名)

skip = (对lua隐藏的接口)

修改好了之后保存文件。接着要配置环境

找到此目录下的README.mdown文件,打开

按照上面安装好,做好,关于cheetah这个,直接拷贝文件夹,别进入目录内把所有文件散着放到C:\Python27\Lib\site-packages

ndk r9b版本以上就好了

环境配置好后

执行 python genbindings_binding_test.py命令

你会在你的output_out 路径上看到了生成的文件,api文件夹,一个hpp,一个cpp。如果咩生成,就要检查下是不是出错环节。

注册

打开AppDelegate.cpp,加入hpp头文件

AppDelegate::applicationDidFinishLaunching方法中,在lua_module_register(L);下,复制刚才生成的hpp中register_all_myclass(L);

这就注册好了。


调用

    local p = LuaBindingTest.new(0)
    p:add(4,1)
    p:sub(2,1)

OVER





版权声明:本文为博主原创文章,转载请著名出处。

cocos2dx lua学习笔记 <一> quick 3.5把自定义C++类绑定到lua

标签:cocos2dx   lua   

原文地址:http://blog.csdn.net/wushao126/article/details/46660375

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!