Cocos2d-x 游戏开发 - 代码与CocosBuilder绑定

准备工作:新建一个cocosbuilder项目,添加menu,button,labeltext



1.class绑定-先上代码

.h文件
a-在MainScene.h添加新的函数,

CCB_STATIC_NEW_AUTORELEASE_OBJECT_WITH_INIT_METHOD(MainScene, create);

b-然后在MainScene.h中添加一个新类MainSceneLayerLoader代码如下:

class MainSceneLayerLoader : public cocos2d::extension::CCLayerLoader

{

public:

    CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(MainSceneLayerLoader, loader);

protected:

    CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(MainScene);

};

.cpp文件

然后我们在MainScene.cpp中添加一行注册将ccb文件和类绑定起来.

 CCNodeLoaderLibrary *lib = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();

 

lib->registerCCNodeLoader("MainScene"MainSceneLayerLoader::loader());

cocosbuilder中将根节点的Custom class设置为MainScene.如下图



备注:在cocosBuilder 3.0中,默认为JavaScript ,需要把javascript取消掉


然后运行下, 确保没有错误. 
这几行代码, 就是ccb文件和类绑定的最简模式了.




2.MenuItem,Button绑定-先上代码

.h文件

class MainScene

public cocos2d::CCLayer

public cocos2d::extension::CCBSelectorResolver

重写虚函数

virtual cocos2d::SEL_MenuHandler onResolveCCBCCMenuItemSelector(cocos2d::CCObject * pTarget, constchar* pSelectorName);

virtual cocos2d::extension::SEL_CCControlHandler onResolveCCBCCControlSelector(cocos2d::CCObject * pTarget, const char* pSelectorName);


void onMenuItemTest(cocos2d::CCObject *pSender, cocos2d::extension::CCControlEvent pCCControlEvent);

void onButtonTest(cocos2d::CCObject *pSender, cocos2d::extension::CCControlEvent pCCControlEvent);

.cpp文件

SEL_MenuHandler MainScene::onResolveCCBCCMenuItemSelector(cocos2d::CCObject *pTarget, const char*pSelectorName)

{

    CCB_SELECTORRESOLVER_CCMENUITEM_GLUE(this"onMenu"MainScene::onMenuItemTest);

    return NULL;

}

SEL_CCControlHandler MainScene::onResolveCCBCCControlSelector(cocos2d::CCObject *pTarget, const char*pSelectorName)

{

    CCB_SELECTORRESOLVER_CCCONTROL_GLUE(this"onButtonTest"MainScene::onButtonTest);

    return NULL;

}

void MainScene::onMenuItemTest(cocos2d::CCObject *pSender, cocos2d::extension::CCControlEventpCCControlEvent)

{

    CCLog("MenuItem");

//    this->mLabelText->setString("Hello MenuItem");

}

void MainScene::onButtonTest(cocos2d::CCObject *pSender, cocos2d::extension::CCControlEventpCCControlEvent)

{

    CCLog("onButton");

//    this->mLabelText->setString("Hello onButton!!!");

}


MenuItem ,Button 是一样的

在cocosbuilder中,在CCB中找到CCControlButton, 并设置其Selector为onButtonTest . Target设置为Document root. 如下图


然后运行下, 确保没有错误. 

这几行代码, 就是ccb文件和

MenuItem ,Button 

 

绑定的最简模式了.


3 . CCLabelTTF 绑定 -先上代码

.h文件

public cocos2d::extension::CCBMemberVariableAssigner

public cocos2d::extension::CCNodeLoaderListener

virtual cocos2d::SEL_MenuHandler onResolveCCBCCMenuItemSelector(cocos2d::CCObject * pTarget, constchar* pSelectorName);

virtual cocos2d::extension::SEL_CCControlHandler onResolveCCBCCControlSelector(cocos2d::CCObject * pTarget, const char* pSelectorName);

private:

 

cocos2d::CCLabelTTF *mLabelText;

.cpp文件

MainScene::MainScene(): mLabelText(NULL)

{

}

MainScene::~MainScene()

{

    CC_SAFE_DELETE(mLabelText);

}

bool MainScene::onAssignCCBMemberVariable(cocos2d::CCObject *pTarget, const char*pMemberVariableName, cocos2d::CCNode *pNode)

{

    CCB_MEMBERVARIABLEASSIGNER_GLUE(this"mLabelText"CCLabelTTF*, this->mLabelText);

    return true;

}

void MainScene::onNodeLoaded(cocos2d::CCNode *pNode, cocos2d::extension::CCNodeLoader *pNodeLoader)

{

    this->mLabelText->setString("All Loaded");

}


在CCB中给CCLabelTTF添加一个Doc root var 类型的绑定mLabelText. 如下图



然后运行下, 确保没有错误. 

这几行代码, 就是ccb文件和

CCLabelTTF

绑定的最简模式了.




最后运行结果,可以把 CCLabelTTF 和 MenuItem,Button连接在一起



你可能感兴趣的:(Cocos2d-x)