【转】使用cocosbuilder在cocos2d-…
上回讲到如何用cocosbuilder拼接一个完整动画文件出来。
ok,这回就讲如何把动画文件导入到我们的游戏代码中并使用。
第一步:用cocosbuilder导出数据文件
很简单,选中要导出的ccb文件,然后点击file->publish就可以了。
导出的文件在你的项目目录下能找到,后缀为.ccbi的文件就是对应的ccb文件的数据导出文件了。
现在把playerAni.ccbi文件拷贝到我们vs的工程目录资源文件夹下
第二步:新建一个cocos2d-x工程
这里我以最简单的helloworld为例子就可以了
新建之后出现如下画面表示成功,这部分的内容可以去网上搜索,或者cocos2d-x官网了解
这里有个点要注意就是一定要在工程包含头文件的目录中加入 “e:\cocos2d-2.0-x-2.0.3\extensions"这个目录,e盘是我放置cocos2dx的目录,前面你们可以根据各自的具体目录具体设置。
第二步:添加ccbi文件读取类
基础的类可以从cocos2d-x的例子代码中截取,这里我给大家截取好了,3个基础动画类文件在附件中,大家可以下载使用,简单添加到工程就行了。
添加进基础文件之后,接下来,我们修改下HelloWorldScene.h和HelloWorldScene.cpp文件
首先是HelloWorldScene.h文件
头文件部分,我们要加入包含语句
- #include "cocos-ext.h"
- #include "AnimationsLayerLoader.h"
- using namespace cocos2d::extension;
接下来修改HelloWorldScene.cpp文件
在HelloWorldScene.cpp的init方法中插入下面的语句
- CCBAnimationManager *actionManager = NULL;
- CCNodeLoaderLibrary * ccNodeLoaderLibrary = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();
- ccNodeLoaderLibrary->registerCCNodeLoader("AnimationsTestLayerLoader", AnimationsTestLayerLoader::loader());
- cocos2d::extension::CCBReader * ccbReader = new cocos2d::extension::CCBReader(ccNodeLoaderLibrary);
- CCNode * node = ccbReader->readNodeGraphFromFile("boneCCb/playerAni.ccbi", this,&actionManager);
- ((AnimationsTestLayer*)node)->setAnimationManager(actionManager);
- ccbReader->release();
- node->setPosition(ccp(100,160));
- AnimationsTestLayer * spr = (AnimationsTestLayer *)node;
- if(node != NULL) {
- this->addChild(node);
- }
今后如果要加入其它动画,只需修改
CCNode * node = ccbReader->readNodeGraphFromFile("boneCCb/playerAni.ccbi", this,&actionManager);
这句代码中的ccbi文件名就可以了
ok,大功告成,接下来运行,看看效果
- #ifndef _ANIMATIONSTESTLAYERLOADER_H_
- #define _ANIMATIONSTESTLAYERLOADER_H_
- #include "AnimationsTestLayer.h"
- class CCBReader;
- class AnimationsTestLayerLoader : public cocos2d::extension::CCNodeLoader{
- public:
- CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(AnimationsTestLayerLoader, loader);
- protected:
- CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(AnimationsTestLayer);
- };
- #endif
- #ifndef _ANIMATIONSTESTLAYER_H_
- #define _ANIMATIONSTESTLAYER_H_
- #include "cocos2d.h"
- #include "cocos-ext.h"
- class AnimationsTestLayer
- : public cocos2d::CCNode
- //, public cocos2d::extension::CCBSelectorResolver
- //, public cocos2d::extension::CCBMemberVariableAssigner
- {
- public:
- CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(AnimationsTestLayer,create);
- AnimationsTestLayer();
- virtual ~AnimationsTestLayer();
- //virtual cocos2d::SEL_MenuHandler onResolveCCBCCMenuItemSelector(CCObject * pTarget, cocos2d::CCString * pSelectorName);
- //virtual cocos2d::extension::SEL_CCControlHandler onResolveCCBCCControlSelector(cocos2d::CCObject * pTarget, cocos2d::CCString * pSelectorName);
- //virtual bool onAssignCCBMemberVariable(cocos2d::CCObject * pTarget, cocos2d::CCString * pMemberVariableName, cocos2d::CCNode * pNode);
- void setAnimationManager(cocos2d::extension::CCBAnimationManager *pAnimationManager);
- // void runActionfrom();
- private:
- cocos2d::extension::CCBAnimationManager *mAnimationManager;
- };
- #endif
- #include "AnimationsTestLayer.h"
- USING_NS_CC;
- USING_NS_CC_EXT;
- AnimationsTestLayer::AnimationsTestLayer()
- : mAnimationManager(NULL)
- {}
- AnimationsTestLayer::~AnimationsTestLayer()
- {
- CC_SAFE_RELEASE_NULL(mAnimationManager);
- }
- //SEL_MenuHandler AnimationsTestLayer::onResolveCCBCCMenuItemSelector(CCObject * pTarget, CCString * pSelectorName)
- //{
- // return NULL;
- //}
- //SEL_CCControlHandler AnimationsTestLayer::onResolveCCBCCControlSelector(CCObject *pTarget, CCString*pSelectorName) {
- //
- //
- // return NULL;
- //}
- //bool AnimationsTestLayer::onAssignCCBMemberVariable(CCObject * pTarget, CCString * pMemberVariableName, CCNode * pNode) {
- // CCB_MEMBERVARIABLEASSIGNER_GLUE(this, "mAnimationManager", CCBAnimationManager *, this->mAnimationManager);
- //
- // return false;
- //}
- void AnimationsTestLayer::setAnimationManager(cocos2d::extension::CCBAnimationManager *pAnimationManager)
- {
- //CC_SAFE_RELEASE_NULL(mAnimationManager);
- mAnimationManager = pAnimationManager;
- CC_SAFE_RETAIN(mAnimationManager);
- }
- //void AnimationsTestLayer::runActionfrom()
- //{
- // mAnimationManager->runAnimations("first",3.3f);
- //}
- //void AnimationsTestLayer::onCCControlButtonIdleClicked(CCObject *pSender, CCControlEvent pCCControlEvent) {
- // mAnimationManager->runAnimations("Idle", 0.3f);
- //}
helloworld.h
- #ifndef __HELLOWORLD_SCENE_H__
- #define __HELLOWORLD_SCENE_H__
- #include "cocos2d.h"
- #include "cocos-ext.h"
- #include "AnimationsLayerLoader.h"
- #include "SimpleAudioEngine.h"
- using namespace cocos2d::extension;
- class HelloWorld : public cocos2d::CCLayer
- {
- public:
- // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
- virtual bool init();
- // there's no 'id' in cpp, so we recommand to return the exactly class pointer
- static cocos2d::CCScene* scene();
- // a selector callback
- void menuCloseCallback(CCObject* pSender);
- // implement the "static node()" method manually
- CREATE_FUNC(HelloWorld);
- };
- #endif // __HELLOWORLD_SCENE_H__
- // Add the sprite to HelloWorld layer as a child layer.
- this->addChild(pSprite, 0);
- bRet = true;
- } while (0);
- CCBAnimationManager *actionManager = NULL;
- CCNodeLoaderLibrary * ccNodeLoaderLibrary = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();
- ccNodeLoaderLibrary->registerCCNodeLoader("AnimationsTestLayerLoader", AnimationsTestLayerLoader::loader());
- cocos2d::extension::CCBReader * ccbReader = new cocos2d::extension::CCBReader(ccNodeLoaderLibrary);
- CCNode * node = ccbReader->readNodeGraphFromFile("boneCCb/playerAni.ccbi", this,&actionManager);
- ((AnimationsTestLayer*)node)->setAnimationManager(actionManager);
- ccbReader->release();
- node->setPosition(ccp(100,160));
- AnimationsTestLayer * spr = (AnimationsTestLayer *)node;
- if(node != NULL) {
- this->addChild(node);
- }
- return bRet;
另外如果大家对动画方面想研究得更加深入,可以查阅火云洞红孩的博客
http://blog.csdn.net/honghaier/article/details/8075354
【转】使用cocosbuilder在cocos2d-…相关推荐
- 图文并茂使用CocosBuilder制作Cocos2D游戏 分享0
图文并茂使用CocosBuilder制作Cocos2D游戏 分享0 目 录 The Game 设置工程 创建动画类型的主界面 本文由Zynga 工程师原创,翻译:Iven,张作宸,Butterfly ...
- 图文并茂使用CocosBuilder制作Cocos2D游戏
手把手教你使用CocosBuilder一次性导出Cocos2d-html5,Cocos2d-x和Cocos2d-iPhone的游戏资源文件.这个游戏90%的工作量是用工具完成. CocosBuilde ...
- 从零开始学习CocosBuilder(转自泰然论坛)
CocosBuilder是Cocos2d系列的配套开源工具,最新的版本是3.0a, 也是我们这个文章所采用的版本.CocosBuilder目前只有OS X版本, 没有Windows的版本, 而且开发语 ...
- 自学 cocos2d 游戏开发应该按什么步骤进行?
著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:孙鹏飞 链接:http://www.zhihu.com/question/21114802/answer/22840 ...
- 网上搜集第三方(一)
iOS开发-常用第三方开源框架介绍 为了了解一下目前第三方库的普及程度,下面列举一些知名App对第三方库的依赖. 网易新闻 AppleReachability ASIHTTPRequest EGOTa ...
- 开源 iOS 项目分类索引大全
GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库 Category/Util sstoolkit 一套Category类型的库,附带很多自定 ...
- iOS 开源项目(一)
pod上面直接搜名字就好 系统基础库 sstoolkit 一套Category类型的库,附带很多自定义控件 功能不错- BlocksKit 将Block风格带入UIKit和Founcation coc ...
- 史上最全的iOS开源项目分类汇总
学了这么久,还是抽时间把github上比较好用的第三方总结了一下: Category/Util sstoolkit 一套Category类型的库,附带很多自定义控件 功能不错- BFKit 又一套Ca ...
- github上比较好用的第三方
本片博文转于:AirZilong的博客(个人感觉很不错,感谢 AirZilong的分享) 学了这么久,还是抽时间把github上比较好用的第三方总结了一下: Category/Util sstool ...
- iOS-----GitHub上比较齐全的iOS 工具和App
Github-iOS 工具 和 App 系统基础库 Category/Util sstoolkit 一套Category类型的库,附带很多自定义控件 功能不错- BFKit 又一套Ca ...
最新文章
- CesiumLab V1.2 新功能 倾斜数据处理
- leetcode 10 Regular Expression Matching
- python可以提高程序执行速度N倍你知道吗?
- eclipse +python 修改 各种颜色 +字体
- 总结界面框架_UI_Adapter
- git 删除tag_git使用教程9pycharm 使用 tag 打标签
- vim 环境写 markdown 的插件推荐
- SAP HANA如何在存储过程中使用自定义的table type
- 应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的(转载)...
- 字节跳动面试:java编程思想电子版非pdf
- 【李宏毅2020 ML/DL】P43-44 More about Adversarial Attack | Images Audio
- 规范信息系统工程建设市场 促进信息化健康发展
- java图文并排_JAVA如何实现图文混合显示
- lastwinner分红系统开发
- MySQL期末复习题(题库)
- 在集体奋斗中实现自己的价值
- HashSet及LinkedHashSet源码分析(基于JDK1.6)
- 算法系列1《DES》
- 【电脑使用】如何将电脑磁盘变为移动磁盘?
- 构造二叉树-前序遍历