CocosBuilder 使用技巧
本文主要侧重于CocosBuilder在cocos2dx中的集成。对CocosBuilder使用的介绍比较简单。详细的使用请参考官方教程;
CocosBuilder部分
1)创建工程
首先创建Cocos2dx工程“ShootTheApple”,然后在其Resources目录下新建ccb,并在ccb中创建CocosBuilder工程。目录结构如下图:
CocosBuilder工程会产生3类文件,后缀分别为ccbproj, ccb, ccbi(其中前两个文件使工程文件--ccb.ccbproj, apple.ccb。 ccbi文件,是导出的文件,被cocos2dx程序使用,如上图的apple.ccbi);
2)配置cocosBuilder属性
3)创建ccb文件。
4)编辑ccb文件--按钮
4)编辑ccb文件--动画
代码的集成
- CCNodeLoaderLibrary * ccNodeLoaderLibrary = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();
- ccNodeLoaderLibrary->registerCCNodeLoader("Intro", IntroLoader::loader());
- /* Create an autorelease CCBReader. */
- cocos2d::extension::CCBReader * ccbReader = new cocos2d::extension::CCBReader(ccNodeLoaderLibrary);
- /* Read a ccbi file. */
- CCNode * node = ccbReader->readNodeGraphFromFile("MainScene.ccbi");
- ccbReader->release();
- CCScene* scene = CCScene::create();
- scene->addChild(node);
- CCNodeLoaderLibrary * ccNodeLoaderLibrary = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();
- ccNodeLoaderLibrary->registerCCNodeLoader("Intro", IntroLoader::loader());
IntroLoader对象负责加载相关的类Intro。完整代码如下:
- #ifndef ShootTheApple_Intro_h
- #define ShootTheApple_Intro_h
- #include "PhysicsSprite.h"
- #include "CcbBase.h"
- #include "Playground.h"
- USING_NS_CC;
- USING_NS_CC_EXT;
- class Intro: public CcbBase {
- public:
- CCB_STATIC_NEW_AUTORELEASE_OBJECT_WITH_INIT_METHOD(Intro, create);
- Intro(){ }
- virtual ~Intro() { }
- void btnPlay(cocos2d::CCObject *pSender) { //这个是回调函数,
- CCDirector::sharedDirector()->replaceScene(PlaygroundLoader::loadCcbi());
- }
- virtual cocos2d::SEL_MenuHandler onResolveCCBCCMenuItemSelector(cocos2d::CCObject * pTarget, const char * pSelectorName) {
- CCB_SELECTORRESOLVER_CCMENUITEM_GLUE(this, "btnPlay", Intro::btnPlay); // 把btnPlay对应回调函数,btnPlay的设置在“编辑ccb文件--按钮”中介绍了
- }
- };
- /* Forward declaration. */
- class CCBReader;
- class IntroLoader : public cocos2d::extension::CCLayerLoader {
- public:
- static CCScene* loadCcbi() {
- CCNodeLoaderLibrary * ccNodeLoaderLibrary = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();
- ccNodeLoaderLibrary->registerCCNodeLoader("Intro", IntroLoader::loader());
- /* Create an autorelease CCBReader. */
- cocos2d::extension::CCBReader * ccbReader = new cocos2d::extension::CCBReader(ccNodeLoaderLibrary);
- /* Read a ccbi file. */
- CCNode * node = ccbReader->readNodeGraphFromFile("MainScene.ccbi");
- ccbReader->release();
- CCScene* scene = CCScene::create();
- scene->addChild(node);
- return scene;
- }
- public:
- CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(IntroLoader, loader);
- protected:
- CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(Intro);
- };
- #endif
- #ifndef ShootTheApple_CcbBase_h
- #define ShootTheApple_CcbBase_h
- #include "cocos2d.h"
- #include "cocos-ext.h"
- #include "Box2D.h"
- USING_NS_CC;
- USING_NS_CC_EXT;
- class CcbBase: public cocos2d::CCLayer
- , public cocos2d::extension::CCBSelectorResolver
- , public cocos2d::extension::CCBMemberVariableAssigner
- , public cocos2d::extension::CCNodeLoaderListener
- {
- public:
- virtual cocos2d::SEL_MenuHandler onResolveCCBCCMenuItemSelector(cocos2d::CCObject * pTarget, const char * pSelectorName) {
- // do nothing
- //CCB_SELECTORRESOLVER_CCMENUITEM_GLUE(this, "onPlay", Playground::btnPlay);
- return NULL;
- }
- virtual cocos2d::extension::SEL_CCControlHandler onResolveCCBCCControlSelector(cocos2d::CCObject * pTarget, const char * pSelectorName) {
- // do nothing
- return NULL;
- }
- virtual bool onAssignCCBMemberVariable(cocos2d::CCObject * pTarget, const char * pMemberVariableName, cocos2d::CCNode * pNode) {
- // do nothing
- //CCB_MEMBERVARIABLEASSIGNER_GLUE(this, "apple", CCSprite *, this->apple);
- return NULL;
- }
- virtual bool onAssignCCBCustomProperty(CCObject* pTarget, const char* pMemberVariableName, cocos2d::extension::CCBValue* pCCBValue) {
- // do nothing
- return false;
- }
- virtual void onNodeLoaded(cocos2d::CCNode * pNode, cocos2d::extension::CCNodeLoader * pNodeLoader) {
- // do nothing
- }
- };
- #endif
CCReader进行ccbi和自定义类的联系的过程如下,CCBReader一边解析ccbi文件,一边调用自定义类的onResolveCCBCCMenuItemSelector等方法;在这些回调方法中,可以进行相关的绑定工作,如对象绑定,CCMenuItem selector的绑定等。更多的绑定细则,请参考cocosBuilder中的帮助。
版本说明
在这个demo中,cocosBuilder的版本为Version 3 alpha3,配套的cocos2dx版本为cocos2d-2.1rc0-x-2.1.2;
cocosBuilder的官方:http://cocosbuilder.com/
cocosBuilder官方教程:https://github.com/vlidholt/CocosDragon/blob/master/Tutorial/Tutorial.md
cocos2dx的相关页面:http://www.cocos2d-x.org/news/95
源代码下载: http://vdisk.weibo.com/s/BSjUaUQYZZ_MR
源码下载2:链接:http://pan.baidu.com/s/1qYJ4Nnu 密码:g66s
CocosBuilder 使用技巧相关推荐
- [cocos2dx开发技巧4]工具CocosBuilder的使用--复杂动画
转发,请保持地址:http://blog.csdn.net/stalendp/article/details/8760957 一个网友推荐过一款制作动画的工具,叫做 Spriter: 其中有个Demo ...
- [cocos2dx开发技巧1]工具CocosBuilder的使用--demo介绍
转发,请保持地址:http://blog.csdn.net/stalendp/article/details/8755958 最近在接触CocosBuilder之后,发现这是一款非常优秀的软件,可以加 ...
- [cocos2dx开发技巧2]工具CocosBuilder的使用--集成
转发,请保持地址:http://blog.csdn.net/stalendp/article/details/8756467 本文主要侧重于CocosBuilder在cocos2dx中的集成.对Coc ...
- Cocos2d-x 与Cocosbuilder结合使用的一些技巧
转自:http://jetion.diandian.com/post/2012-12-04/40047798280,感谢作者分享 1. 使用Cocosbuilder制作帧动画,Publish的时候崩溃 ...
- CocosBuilder 完全攻略 (译)
本文翻译自:http://www.raywenderlich.com/23996/introduction-to-cocosbuilder 翻译:弹涂鱼 CocosBuilder与interface ...
- cocosBuilder播放动画
Working with Animations 动画 You can use CocosBuilder for creating character animations, animating com ...
- keyshot怎么批量渲染_提高Keyshot逼真渲染的小技巧
Keyshot是一个特别神奇的应用软件,但是,就像Photoshop一样,如果你不知道怎么使用它,那么再优秀的工具在你手中也什么都是了.这里我就告诉你一些制作优秀效果图的技巧以及如何使用这个神奇软件. ...
- Linux shell 学习笔记(6)— vim 编辑器使用方法及技巧
1. 检查 vim 软件包 1.1 CentOS 发行版 $ alias vi alias vi='vim' $ $ which vim /usr/bin/vim $ $ ls -l /usr/bin ...
- Python 笔试面试及常用技巧 (1)
1. 交换两个数字 In [66]: x, y = 1, 2In [67]: x Out[67]: 1In [68]: y Out[68]: 2 赋值的右侧形成了一个新的元组,左侧立即解析(unpac ...
- Redis 使用技巧
Redis 现在非常受欢迎,似乎已经成为内存数据存储行业的标准.本人结合平时使用Redis经验,也同时查找了一些网上别人的总结经验,总结以下几条Redis使用技巧. 1. 停止使用 KEYS 众所周知 ...
最新文章
- php点击复制按钮到我的粘贴板,JS 实现点击按钮复制内容到粘贴板 clipboard
- c语言中int和指针和字符所占字节
- Linux起不来,如何修复
- [Leetcode 15]三数之和 3 Sum
- 用FadingActionBar实现有头图的ActionBar
- Linux编程(7)_gdb
- 微信小程序中如何使用setData修改数组或对象中的某一参数
- php.ini – 配置文件详解
- FlashDevelop 3.0.0 Rc2 版本下载
- 阿里马涛:重新定义云时代的开源操作系统
- Linux系统配置静态IP地址步骤
- 白帽子讲Web安全(第一章总结)
- C#发送邮件,包含发送附件
- 我要多开梦幻手游PC端(梦幻手游PC端多开的简单分析及实现办法)(二)
- 大数据安全体系介绍之技术体系篇
- MIMO技术与链路容量
- android sensor hal,Android Sensor详解(3)porting drvier
- 26丨案例:手把手带你理解TPS趋势分析*
- 【前端面试指南】简历上的前端常用单词,你拼写对了吗?
- java 时间轮_基于时间轮的定时任务
热门文章
- 地理加权回归简易总结
- Linux中查看bz2压缩文件大小,Linux bz2文件解压与压缩之bzip2命令
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(6)- Bootable image格式与加载(elftosb/.bd)...
- 看产品经理怎么用360实现Java垃圾回收!
- MATLAB中基于GUI的噪声抑制imnoise,medfilt2命令
- MySQL 管理表记录
- vue基础----用vue来展示表格数据
- Day33:Swift 和 Object - C
- 如何快速成长为图形学工程师
- Quartus破解成功,但出现不支持某些设备的问题解决