Cocosbuider 3.0 和 Cocos2d-x 2.1.4读取场景

CocosbuiderTest.h

#ifndef __cocosTest__CocosbuiderTest__
#define __cocosTest__CocosbuiderTest__

#include "cocos2d.h"
#include "cocos-ext.h"
using namespace cocos2d;
using namespace extension;

class CocosBuiderTest : public CCLayer,public CCBSelectorResolver,public CCBMemberVariableAssigner
{
public:
    static CCScene* scene();
    CCB_STATIC_NEW_AUTORELEASE_OBJECT_WITH_INIT_METHOD(CocosBuiderTest, create);

    virtual SEL_MenuHandler onResolveCCBCCMenuItemSelector(CCObject * pTarget, const char* pSelectorName);
    virtual SEL_CCControlHandler onResolveCCBCCControlSelector(CCObject * pTarget, const char* pSelectorName);
    virtual bool onAssignCCBMemberVariable(CCObject* pTarget, const char* pMemberVariableName, CCNode* pNode);
    
private:
    void pressButton();
    CCLabelTTF* mTitleLabelTTF;
};

class CocosBuiderTestLoader : public CCLayerLoader
{
public:
    CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(CocosBuiderTestLoader, loader);
protected:
    CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(CocosBuiderTest);
};

#endif /* defined(__cocosTest__CocosbuiderTest__) */

CocosbuiderTest.cpp

#include "CocosbuiderTest.h"

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

SEL_MenuHandler CocosBuiderTest::onResolveCCBCCMenuItemSelector(CCObject * pTarget, const char* pSelectorName)
{
    CCLog("onResolveCCBCCMenuItemSelector!!!");
    CCB_SELECTORRESOLVER_CCMENUITEM_GLUE(this, "onPressButton", CocosBuiderTest::pressButton);
    return NULL;
}

SEL_CCControlHandler CocosBuiderTest::onResolveCCBCCControlSelector(CCObject * pTarget, const char* pSelectorName)
{
    CCLog("onResolveCCBCCControlSelector!!!");
    return NULL;
}

bool CocosBuiderTest::onAssignCCBMemberVariable(CCObject* pTarget, const char* pMemberVariableName, CCNode* pNode)
{
    CCLog("onAssignCCBMemberVariable!!!");
    CCB_MEMBERVARIABLEASSIGNER_GLUE(this, "mTitleLabelTTF", CCLabelTTF*, this->mTitleLabelTTF);
    return  false;
}

void CocosBuiderTest::pressButton()
{
    CCLog("mTitleLabelTTF = %s",mTitleLabelTTF->getString());
}


需要注意的部分:
发布的ccbi文件若用于c++解析,则ccb文件的Document下的JS Controller属性要取消选中(用编译器打开对应的cbb文件,将jsControlled属性改为false),使用Custom Class属性,否则在c++中无法解析其子节点。若用于脚本解析(包括lua和js),则要使用JS Controller属性,否则无法在脚本中解析任何节点。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值