cocos2dx lua學習筆記 quick 3.5把自定義C++類綁定到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





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章