cocosbuilder详细使用教程[亲测有效]

(44) 2023-06-27 16:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说cocosbuilder详细使用教程[亲测有效],希望能够帮助你!!!。

本文使用cocos2d-x 2.1.2版本。

用cocosbuilder3 alpha2版本。

分两步走:

第一步:

1,新建一个cocosbuilder工程。默认创建Hello CocosBuilder的MainScene

2,不改动任何内容,publish到对应的工程资源目录下,参考以下运行:

MainScene.h

#include "cocos-ext.h"
USING_NS_CC_EXT;
USING_NS_CC;

class MainScene:public CCLayer{
public:
    static CCScene* scene();
};

MainScene.cpp:

#include "MainScene.h"

CCScene* MainScene::scene()
{
    CCScene *scene = CCScene::create();
    
    CCNodeLoaderLibrary *lib = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();
    //lib->registerCCNodeLoader("MainScene", MainSceneLayerLoader::loader());
    CCBReader *reader = new CCBReader(lib);
    CCNode *node = reader->readNodeGraphFromFile("MainScene.ccbi", scene);
    reader->release();
    if (node!=NULL)
    {
        scene->addChild(node);
    }
    return scene;
}

此时基本无问题,都能运行起来。

3,替换或加几个控件,很可能出现程序启动的时候又找不到图片资源的错误,请参考 http://blog.csdn.net/luxiaoyu_sdc/article/details/8849854

至此,界面加载问题解决完毕。

第二步:实现cocosbuilder的动态绑定。

1,自定义类绑定

class MainSceneLayerLoader : public cocos2d::extension::CCLayerLoader
{
public:
    CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(MainSceneLayerLoader, loader);
protected:
    CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(MainScene);
};

2,属性绑定

public cocos2d::extension::CCBMemberVariableAssigner
virtual bool onAssignCCBMemberVariable(CCObject* pTarget, const char* pMemberVariableName, CCNode* pNode) = 0;
virtual bool onAssignCCBCustomProperty(CCObject* pTarget, const char* pMemberVariableName, CCBValue* pCCBValue) { return false; };

3,成员变量绑定

public cocos2d::extension::CCBMemberVariableAssigner
virtual bool onAssignCCBMemberVariable(CCObject* pTarget, const char* pMemberVariableName, CCNode* pNode) = 0;
virtual bool onAssignCCBCustomProperty(CCObject* pTarget, const char* pMemberVariableName, CCBValue* pCCBValue) { return false; };

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

// 在初始化函数中调用
public cocos2d::extension::CCNodeLoaderListener
virtual void onNodeLoaded(CCNode * pNode, CCNodeLoader * pNodeLoader) = 0;
void MainScene::onNodeLoaded(cocos2d::CCNode *pNode, cocos2d::extension::CCNodeLoader *pNodeLoader)
{
    this->mLabelText->setString("All Loaded");
}

4,菜单事件绑定

public cocos2d::extension::CCBSelectorResolver
virtual SEL_MenuHandler onResolveCCBCCMenuItemSelector(CCObject * pTarget, const char* pSelectorName) = 0;   
virtual SEL_CCControlHandler onResolveCCBCCControlSelector(CCObject * pTarget, const char* pSelectorName) = 0;

CCB_SELECTORRESOLVER_CCMENUITEM_GLUE(this, "onPressA", MenuLayer::onPressA);
CCB_SELECTORRESOLVER_CCMENUITEM_GLUE(this, "onPressB", MenuLayer::onPressB);

5,控制按钮绑定

public cocos2d::extension::CCBSelectorResolver
virtual SEL_MenuHandler onResolveCCBCCMenuItemSelector(CCObject * pTarget, const char* pSelectorName) = 0;
virtual SEL_CCControlHandler onResolveCCBCCControlSelector(CCObject * pTarget, const char* pSelectorName) = 0;

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

稍后给出运行例子截图和相关说明。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复