Quick-Cocos2d-x 2.26 用tolua導出C++類給lua調用WINDOWS篇例子2

參考:http://www.cnblogs.com/vokie/p/3816324.html 這篇博文 給了詳細的操作,配有圖,推薦大家看

參考:http://www.codeo4.cn/archives/746 這篇博文版本較老,而且是基於xcode

這次以第二篇博文例子爲主,這個例子沒有新建一個.tulua文件,而是在原來的.tulua中修改,同時新建了一個目錄夾,將要添加的c++頭文件和源文件放在裏面,也有實用價值。

1、創建目錄和c++源文件

在C:\work\quick-cocos2d-x\lib\cocos2d-x\external\extra創建一個myclass目錄,然後創建:

MySprite.h 內容如下:

#ifndef __mtet__MySprite__
#define __mtet__MySprite__
 
#include "cocos2d.h"
using namespace cocos2d;
 
class MySprite : public CCSprite{
public:
    static MySprite* createMS(const char* fileName);
};
#endif /* defined(__mtet__MySprite__) */

MySprite.cpp 內容如下:

#include "MySprite.h"
MySprite* MySprite::createMS(const char* fileName){
    MySprite* sp = new MySprite();
    if(sp && sp->initWithFile(fileName)){
        sp->setPosition(ccp(100,100));
        sp->autorelease();
        return sp;
    }
    CC_SAFE_DELETE(sp);
    return NULL;
}

2、修改調用.tolua文件,包含並創建lua對c++文件的調用

在C:\work\quick-cocos2d-x\lib\cocos2d-x\external\extra\luabinding

修改:cocos2dx_extra_luabinding.tolua

A: 在:cocos2dx_extra_luabinding.tolua正文

$#include "network/CCNetwork.h"

後面加上:(這部分是包含c++文件)

$#include "myclass/MySprite.h"

B: 在:cocos2dx_extra_luabinding.tolua正文

class CCNetwork
{
    static bool isLocalWiFiAvailable(void);
    static bool isInternetConnectionAvailable(void);
    static bool isHostNameReachable(const char* hostName);
    static int getInternetConnectionStatus(void);
};

後面加上:(這部分是lua對c++的調用)

$#include "myclass/MySprite.h"

class MySprite : public CCSprite{
    static MySprite* createMS(const char* fileName);
};

3、執行build.bat,生成新的.cpp文件,以便visual studio調用

雙擊C:\work\quick-cocos2d-x\lib\cocos2d-x\external\extra\luabinding\build.bat

生成新的:

cocos2dx_extra_luabinding.cpp

進入cocos2dx_extra_luabinding.cpp,會看到裏面有MySprite這個關鍵字,表示生效

4、用vs2012打開player.sln,生成新的模擬器

打開C:\work\quick-cocos2d-x\player\proj.win32\player.sln

在項目的:cocos2x_2012>cocos2d-x>external>extra>創建一個myclaa篩選項,把MySprite.h和MySprite.cpp包含進來。

然後編譯。

(可以在cocos2x_2012點右鍵選屬性,然後在彈出的配置屬性>c/c++>常規右邊的“附加包含目錄中,點編輯:新增一個:

$(QUICK_COCOS2DX_ROOT)\lib\cocos2d-x\external\extra\myclass,我試過添加或不添加,不影響編譯)

5、測試是否起作用,在MainScene.lua中,修改代碼如下:

function MainScene:ctor()
 
    local label = ui.newTTFLabel({
        text = "Hello, World",
        size = 64,
        x = display.cx,
        y = display.cy,
        align = ui.TEXT_ALIGN_CENTER
    })
    self:addChild(label)
 
    local ms = MySprite:createMS("icon.png")
    self:addChild(ms)

end

用新編譯的模擬器測試,出現icon.png圖片,成功!

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