1: 几个设置:
---------------------------------------------Cocos2d-x——CocosBuilder官方帮助文档翻译1 使用自定义类 --------参考
Cocos2d-x 游戏开发 - 代码与CocosBuilder绑定
Cocos2d-x——CocosBuilder1: 创建按钮; 先选中最下面的 DefaultTime 在点击最上面的 sprite button lay 等等; /comd + - 跳大小 / 修改图片时; 都只能在右边的属性中, 不能直接拖 / 添加资源:直接把资源copy到下面中的 picture即可 / 要删除; 用BackSpace即可 // 按钮用宏之后
CCB_SELECTORRESOLVER_CCMENUITEM_GLUE
, 点击没反应 ;应为builder中的事件下面Target: 选owner 不能选择none / 知道返回值不对但是不会改:
2:三个需要指点路径的:
1: new -project 创建新的工程, 新建一个文件夹ccb与工程并列;OK 出现的resource 下删除 / 见自己的文件夹 入picture config
2: new->interface file 这个路径选择上面的config即可, --- 调大小 因为一个是 4 一个是5的
3:file-》project setting 设置cocosbuiler资源文件的路径 +进去; 选择刚才的picture 即可存放资源 ---*- -- - - - 不用设了
4:fiele-> publish setting 去掉html5 IOS中勾选select 选择 ../项目名字/Resources/自己建的文件夹 OK了。
3:点击发布 publish按钮即可; ../项目名字/Resources/自己建的文件夹 下会自动出来需要的 .ccbi文件
4: cocos2d-x 创建工程又不会; 也搜不到; 头: 不要看网上的教程; 根据readMe.md文件
./setup.py
source /Users/ooashid/.bash_profile
cocos new cocosBuilder -p com.daJIao.org -l cpp -d /Users/ooashid/work/cocos2d-x-3.2/pro
5: 出错 老大说 多想想为什么, 看控制台
想这些:用蓝色文件夹见得; 要想在项目中用; 只用在AppDelegate中加上
void FileUtils::setSearchPaths(const std::vector<std::string>& searchPaths)
FileUtils::getInstance()->addSearchPath("ccb/"); cocos2d-x绑定ccb文件个人实现的例子***************------
cocos2d-x绑定ccb文件
MainScene.h添加新的函数,
CCB_STATIC_NEW_AUTORELEASE_OBJECT_WITH_INIT_METHOD(MainScene, create);
MainScene.h
中添加一个新类MainSceneLayerLoader
代码如下:
class MainSceneLayerLoader : public cocos2d::extension::CCLayerLoader
{
public:
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(MainSceneLayerLoader, loader);
protected:
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(MainScene);
};
.cpp文件
然后我们在MainScene.cpp
中添加一行注册将ccb文件和类绑定起来.
CCNodeLoaderLibrary *lib = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();
lib->registerCCNodeLoader("MainScene", MainSceneLayerLoader::loader());
cocosbuilder中将根节点的Custom class
设置为MainScene
.如下图
然后运行下, 确保没有错误.
这几行代码, 就是ccb文件和类绑定的最简模式了.
class MainScene
: public cocos2d::CCLayer
, public cocos2d::extension::CCBSelectorResolver
重写虚函数virtual cocos2d::SEL_MenuHandler onResolveCCBCCMenuItemSelector(cocos2d::CCObject * pTarget, constchar* pSelectorName);
virtual cocos2d::extension::SEL_CCControlHandler onResolveCCBCCControlSelector(cocos2d::CCObject * pTarget, const char* pSelectorName);
void onMenuItemTest(cocos2d::CCObject *pSender, cocos2d::extension::CCControlEvent pCCControlEvent);
void onButtonTest(cocos2d::CCObject *pSender, cocos2d::extension::CCControlEvent pCCControlEvent);
.cpp文件
SEL_MenuHandler MainScene::onResolveCCBCCMenuItemSelector(cocos2d::CCObject *pTarget, const char*pSelectorName)
{
CCB_SELECTORRESOLVER_CCMENUITEM_GLUE(this, "onMenu", MainScene::onMenuItemTest);
return NULL;
}
SEL_CCControlHandler MainScene::onResolveCCBCCControlSelector(cocos2d::CCObject *pTarget, const char*pSelectorName)
{
CCB_SELECTORRESOLVER_CCCONTROL_GLUE(this, "onButtonTest", MainScene::onButtonTest);
return NULL;
}
void MainScene::onMenuItemTest(cocos2d::CCObject *pSender, cocos2d::extension::CCControlEventpCCControlEvent)
{
CCLog("MenuItem");
// this->mLabelText->setString("Hello MenuItem");
}
void MainScene::onButtonTest(cocos2d::CCObject *pSender, cocos2d::extension::CCControlEventpCCControlEvent)
{
CCLog("onButton");
// this->mLabelText->setString("Hello onButton!!!");
}
MenuItem ,Button 是一样的
在cocosbuilder中,在CCB中找到CCControlButton, 并设置其Selector为onButtonTest
. Target设置为Document root
. 如下图
然后运行下, 确保没有错误.
这几行代码, 就是ccb文件和
MenuItem ,Button
绑定的最简模式了.
3 . CCLabelTTF 绑定 -先上代码
.h文件
, public cocos2d::extension::CCBMemberVariableAssigner
, public cocos2d::extension::CCNodeLoaderListener
virtual cocos2d::SEL_MenuHandler onResolveCCBCCMenuItemSelector(cocos2d::CCObject * pTarget, constchar* pSelectorName);
virtual cocos2d::extension::SEL_CCControlHandler onResolveCCBCCControlSelector(cocos2d::CCObject * pTarget, const char* pSelectorName);
private:
cocos2d::CCLabelTTF *mLabelText;
.cpp文件
MainScene::MainScene(): mLabelText(NULL)
{
}
MainScene::~MainScene()
{
CC_SAFE_DELETE(mLabelText);
}
bool MainScene::onAssignCCBMemberVariable(cocos2d::CCObject *pTarget, const char*pMemberVariableName, cocos2d::CCNode *pNode)
{
CCB_MEMBERVARIABLEASSIGNER_GLUE(this, "mLabelText", CCLabelTTF*, this->mLabelText);
return true;
}
void MainScene::onNodeLoaded(cocos2d::CCNode *pNode, cocos2d::extension::CCNodeLoader *pNodeLoader)
{
this->mLabelText->setString("All Loaded");
}
在CCB中给
CCLabelTTF
添加一个Doc root var
类型的绑定mLabelText
. 如下图
然后运行下, 确保没有错误.
这几行代码, 就是ccb文件和
CCLabelTTF
绑定的最简模式了.
最后运行结果,可以把 CCLabelTTF 和 MenuItem,Button连接在一起