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連接在一起

發佈了5 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章