参考: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"
$#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);
};
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图片,成功!