Cocos2d-x基础:CocosBuilder的学习笔记

cocos2d-x版本2.1.4

Cocosbuilder是一个图形化编辑器,用于cocos2d-x和cocos2d-iPhone使用。通过树型结构管理各类节点,在Cocosbuilder里可以创建:

CCNode、CCLayer(四种)、CCSprite(普通和九宫格)、CCControler、CCLabel(两种)、CCMenu(两种)等。

根据类之间的关系,可以任意组织父节点和子节点。



---------------------------------------


1、在GameLayer.h中定义布景层

class GameLayer : public CCLayer, public CCBMemberVariableAssigner, public CCBSelectorResolver

       CCBmemberVariableAssigner是让类覆盖onAssignCCBMemberVariable(),这个是用来绑定变量与ccb文件中元素相对应的函数。

       CCBSelectorResolver是让类覆盖onResolveCCBCCMenuItemSelector()、onResolveCCBCCControlSelector()、onResolveCCBCCCallFuncSelector()。这是绑定ccb中的菜单、控制按钮点击操作和时间轴的回调函数。(ps:中间那个可以看Test中的CocosBuilderTest)


2、在GameLayer.h中定义ccb文件的加载类GameLayerLoader

class GameLayerLoader : public CCNodeLoader{
public:
	CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD( GameLayerLoader, loader );     // 静态方法loader,可直接调用。创建此类的对象,并自动清除内存对象。
	CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD( GameZJG );              // 创建ccb根节点,ccb是树形结构组织的(求高手指点,这里的精华在哪)
};

3、在GameLayer类中添加与ccb文件中对应的成员变量

protected:
	CCLabelTTF* _helloLabel;


4、在GameLayer类中添加 绑定回调函数的函数绑定成员变量的函数

public:
        virtual cocos2d::SEL_MenuHandler onResolveCCBCCMenuItemSelector(cocos2d::CCObject * pTarget, const char * pSelectorName);                // 绑定菜单的回调函数
        virtual cocos2d::extension::SEL_CCControlHandler onResolveCCBCCControlSelector(cocos2d::CCObject * pTarget, const char * pSelectorName); // 绑定按钮的回调函数
        virtual cocos2d::SEL_CallFuncN onResolveCCBCCCallFuncSelector(CCObject * pTarget, const char* pSelectorName);                    	 // 绑定时间轴的回调函数
        virtual bool onAssignCCBMemberVariable(cocos2d::CCObject * pTarget, const char * pMemberVariableName, cocos2d::CCNode * pNode);   	 // 绑定ccb文件中的对象

5、在GameLayer.cpp中覆盖父类的绑定函数

GameLayer::GameLayer()
: _helloLabel(NULL)
{}

GameLayer::~GameLayer()
{
    CC_SAFE_RELEASE(_helloLabel);
}

SEL_MenuHandler GameLayer::onResolveCCBCCMenuItemSelector(CCObject * pTarget, const char * pSelectorName) {
    return NULL;
}

SEL_CCControlHandler GameLayer::onResolveCCBCCControlSelector(CCObject * pTarget, const char * pSelectorName) {
    return NULL;
}

SEL_CallFuncN GameLayer::onResolveCCBCCCallFuncSelector(CCObject * pTarget, const char* pSelectorName)
{
    // CCB_SELECTORRESOLVER_CALLFUNC_GLUE(this, "onCallback1", GameLayer::onCallback1);
    // CCB_SELECTORRESOLVER_CALLFUNC_GLUE(this, "onCallback2", GameLayer::onCallback2);
    return NULL;
}

bool GameLayer::onAssignCCBMemberVariable(CCObject * pTarget, const char * pMemberVariableName, CCNode * pNode) {
    CCB_MEMBERVARIABLEASSIGNER_GLUE(this, "helloLabel", CCLabelTTF *, this->_helloLabel);
    
    return false;
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值