cocosbuilder详细使用教程

本文详细介绍了如何使用cocos2d-x 2.1.2版本与cocosbuilder 3 alpha2创建工程,并进行资源发布。在新建工程并添加控件时,可能会遇到图片资源找不到的问题,文中提供了解决方案。接着,文章讲解了cocosbuilder的动态绑定,指导自定义类与界面元素的绑定方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文使用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.youkuaiyun.com/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);

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值