发布时间:2025-12-10 19:11:32 浏览次数:4
cocosbuilder详细使用教程「建议收藏」本文使用cocos2d-x2.1.2版本。用cocosbuilder3alpha2版本。分两步走:第一步:1,新建一个cocosbuilder工程。默认创建HelloCocosBuilder的MainScene2,不改动任何内容,publish到对应的工程资源目录下,参考以下运行:MainScene.h#include”cocos-ext.h”US
本文使用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();}; 是否还在为Ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!
【正版授权,激活自己账号】:Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】:官方授权 正版激活 自己使用,支持Jetbrains家族下所有IDE…
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);}; public cocos2d::extension::CCBMemberVariableAssignervirtual 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::CCBMemberVariableAssignervirtual 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::CCNodeLoaderListenervirtual void onNodeLoaded(CCNode * pNode, CCNodeLoader * pNodeLoader) = 0;void MainScene::onNodeLoaded(cocos2d::CCNode *pNode, cocos2d::extension::CCNodeLoader *pNodeLoader){ this->mLabelText->setString("All Loaded");} public cocos2d::extension::CCBSelectorResolvervirtual 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); public cocos2d::extension::CCBSelectorResolvervirtual 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);