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属性,否则无法在脚本中解析任何节点。