加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 17:14:08 所属栏目:百科 来源:网络整理
导读:参考:http://www.cnblogs.com/vokie/p/3816324.html 这篇博文 给了详细的操作,配有图,推荐大家看 参考:http://www.codeo4.cn/archives/746 这篇博文版本较老,而且是基于xcode 这次以第二篇博文例子为主,这个例子没有新建一个.tulua文件,而是在原来的.

参考:http://www.cnblogs.com/vokie/p/3816324.html 这篇博文 给了详细的操作,配有图,推荐大家看

参考:http://www.codeo4.cn/archives/746 这篇博文版本较老,而且是基于xcode

这次以第二篇博文例子为主,这个例子没有新建一个.tulua文件,而是在原来的.tulua中修改,同时新建了一个目录夹,将要添加的c++头文件和源文件放在里面,也有实用价值。

1、创建目录和c++源文件

在C:workquick-cocos2d-xlibcocos2d-xexternalextra创建一个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:workquick-cocos2d-xlibcocos2d-xexternalextraluabinding

修改: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:workquick-cocos2d-xlibcocos2d-xexternalextraluabindingbuild.bat

生成新的:

cocos2dx_extra_luabinding.cpp

进入cocos2dx_extra_luabinding.cpp,会看到里面有MySprite这个关键字,表示生效

4、用vs2012打开player.sln,生成新的模拟器

打开C:workquick-cocos2d-xplayerproj.win32player.sln

在项目的:cocos2x_2012>cocos2d-x>external>extra>创建一个myclaa筛选项,把MySprite.h和MySprite.cpp包含进来。

然后编译。

(可以在cocos2x_2012点右键选属性,然后在弹出的配置属性>c/c++>常规右边的“附加包含目录中,点编辑:新增一个:

$(QUICK_COCOS2DX_ROOT)libcocos2d-xexternalextramyclass,我试过添加或不添加,不影响编译)

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图片,成功!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读