Quick-Cocos2d-x 2.26 用tolua导出C++类给lua调用WINDOWS篇例子2

前端之家收集整理的这篇文章主要介绍了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图片,成功!

猜你在找的Cocos2d-x相关文章