文档章节

使用CocosBuilder2.1结合cocos2d-x2.0.3创建动画场景

乐逍遥jun
 乐逍遥jun
发布于 2016/02/22 21:38
字数 1423
阅读 31
收藏 0


原文地址:http://article.ityran.com/archives/2140

本为由泰然教程组成员 浅底 原创,作为一位经验丰富的游戏开发人员,这次浅底将CocosBuilder经验分享给大家,希望大家喜欢,欢迎拍砖!!转载请注明出处!!

在使用Cocos2d框架开发iOS游戏的时候,对于每一个场景(CCScene)的编辑是比较麻烦的,好在有外国的牛人提供了非常棒的场景编辑器—-CocosBuilder。

作为可视化编辑的补充,cocosBuilder成为cocos2D-iphone和cocos2D-x最流行的可视化编辑器。cocos2D-x从2.0版本开始支持cocosBuilder,同样cocosBuilder也是2.0版本与之对应 , 可以通过cocosBuilder的官方网站http://cocosbuilder.com/下载cocosBuilder 。

一、 下载cocosBuilder 2.1和cocos2d-x 2.0.3版本。

二、 把自己想制作动画的资源放在一个文件夹中,命名为ccb,把cocosbuilder publish的文件,创建另一个文件夹,命名为ccbPublish。(文件夹命名随意)

如上图。

注:此处讲解将cocosBuilder和cocos2d-x分开来介绍,一般可以让美工人员掌握cocosBuilder,提供给编程人员ccbPublish文件夹,编程人员就可以直接读取动画文件即可,极大的缓解编程人员的工作(主要是程序员的审美木有人家的好)。

如果自己想又制作动画,又用代码来读取,下面会提到办法。

三、 打开cocosBuilder,创建工程。

File-New-New Project

选择ccb文件夹

将其命名为CCBTest,点击Save。不用管自动生成的hellococoBuilder。

四、设置工程

File-Project Setting

如果想在自己的Xcode中即时看到效果,此处的路劲可以选择为xcode工程中的resources文件夹。这就是上面提到的解决方法。

其他设置如图所示。

图中的几个选项,看英文就知道意思了。不过这里用不到。

五、创建文件File-New-New File,

选择iPhone4的横屏

然后

保存在ccb文件夹中。至此完成了初步的创建的工作。

六、创建动画

在此之前,

这样设置一下,可以减少阴影对自己视觉的影响。

熟悉一下

点击就添加一个相应的东西,之后在右侧会有相应的属性设置

类似xib,相信你们应该很熟悉

添加精灵之后,在相应的时间点上点击如下:

至少添加两个关键帧,并且是相同的。而且可以不同的动作(关键帧)同时运动。

七、保存动画,Publish动画。

常用功能键,保存是command+s,发布是command+option+S,也可以用菜单中的选项。

八、在Xcode中添加ccbPublish里面的文件,使用cocos2d-x代码读取ccbPublish中的ccbi文件。添加文件时需要注意路径一定要和cocosBuilder中的路径一致,(xcode中一般来说都是bundle路径)在工程中添加按一般的步骤来即可,若cocosBuilder文件夹中含有其他文件夹对应的是Xcode添加问价夹中,否则会导致程序找不到相应的资源,程序崩溃。

二、程序读取cocosBuilder创建的ccbi动画文件

在程序中使用时,可以通过CCLayerLoader类注册CCNodeLoaderLibrary,再通过CCNodeLoaderLibrary类定义CCBReader类的实例,再通过readNodeGraphFromFile函数获得父节点,并把父节点加入到场景中,即可以显示出相应的场景。

1、 创建一个cocos2d-x工程。删除自动创建的helloworld文件,创建MainScene文件。

2、 在MainScene文件中读取

.h文件

#ifndef _MAIN_SCENE_h

#define _MAIN_SCENE_h

#include "cocos2d.h"

#include "cocos-ext.h"

class CCBReader;

USING_NS_CC;

USING_NS_CC_EXT;

class MainScene

: public CCLayer

, public cocos2d::extension::CCBSelectorResolver

, public cocos2d::extension::CCBMemberVariableAssigner

, public cocos2d::extension::CCNodeLoaderListener{

public:

CCB_STATIC_NEW_AUTORELEASE_OBJECT_WITH_INIT_METHOD(MainScene, create);

static CCScene* scene();

MainScene();

virtual ~MainScene();

void openTest(const char * pCCBFileName, const char * pCCNodeName = NULL, cocos2d::extension::CCNodeLoader * pCCNodeLoader = NULL);

#pragma mark -

#pragma mark Loader Function

virtual cocos2d::SEL_MenuHandler onResolveCCBCCMenuItemSelector(cocos2d::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);

virtual void onNodeLoaded(cocos2d::CCNode * pNode, cocos2d::extension::CCNodeLoader * pNodeLoader);

};

#pragma mark -

#pragma mark MainSceneLoader

class MainSceneLoader:public cocos2d::extension::CCLayerLoader {

public:

CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(MainSceneLoader, loader);

protected:

CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(MainScene);

};

#endif

.cpp文件

#include "MainScene.h"

#include "AppController.h"

CCScene* MainScene::scene(){

CCScene *scene=CCScene::create();

cocos2d::extension::CCNodeLoaderLibrary *ccNodeLoaderLibrary=cocos2d::extension::CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();

ccNodeLoaderLibrary->registerCCNodeLoader("MainScene",MainSceneLoader::loader());

cocos2d::extension::CCBReader *ccBReader=new cocos2d::extension::CCBReader(ccNodeLoaderLibrary);

//屏幕适配

cocos2d::CCSize size= CCEGLView::sharedOpenGLView()->getVisibleSize();

CCLog("cpp surface size height == %f",size.height);

CCNode * node;

if (size.height==480) {

node = ccBReader->readNodeGraphFromFile("test.ccbi", scene);

}else{//iPhone5,可以为不同的设备制作不同的ccbi文件。同时创建多个画布然后制作,还没有去研究。。。

node = ccBReader->readNodeGraphFromFile("test.ccbi", scene);

}

if(node!=NULL){

scene->addChild(node);

}

return scene;

}

MainScene::MainScene(){

}

MainScene::~MainScene(){

}

void MainScene::openTest(const char * pCCBFileName, const char * pCCNodeName, cocos2d::extension::CCNodeLoader * pCCNodeLoader){

//

}

SEL_MenuHandler MainScene::onResolveCCBCCMenuItemSelector(CCObject * pTarget,CCString * pSelectorName){

//Bind Menu Events,绑定一个menu,点击方法是press,以下同理

CCB_SELECTORRESOLVER_CCMENUITEM_GLUE(this, "press",MainScene::press);

return NULL;

}

SEL_CCControlHandler MainScene::onResolveCCBCCControlSelector(CCObject * pTarget, CCString * pSelectorName){

//Bind CCControl Events

return NULL;

}

bool MainScene::onAssignCCBMemberVariable(CCObject * pTarget, CCString * pMemberVariableName, CCNode * pNode){

//Bind variables

CCB_MEMBERVARIABLEASSIGNER_GLUE(this, "ATM", CCSprite *, this->ATM);

return false;

}

void MainScene::onNodeLoaded(CCNode * pNode, cocos2d::extension::CCNodeLoader * pNodeLoader){

//检测scene

CCLOG("MainScene loading.....successed!") ;

}

3、 在appDelegate.cpp中将helloworld修改掉,

CCScene *pScene = MainScene::scene();

完成以上过程既可以读取自己创建的动画了。

这些是比较基础一些的,cocosBuidler也可以像xib一样绑定事件,对象等。上面的代码中我也有注释,若不然读取ccbi文件只需要CCScene* MainScene::scene()这个函数即可。

还也可以添加粒子效果,可以制作骨骼动画,可以为游戏制作菜单等等一系列的功能。

Cocos2d-x下载的工程中自带有一个TestCpp的工程,是我们学习cocos2d-x的非常好的源代码。其中,在

这里面有制作的非常好的例子,把个不同的test,Animation,button,label,menu,particleSystem,Scrollview,sprite,testHeader等等,大家可以仔细研究研究。

© 著作权归作者所有

乐逍遥jun
粉丝 6
博文 79
码字总数 39510
作品 0
东城
技术主管
私信 提问
如何利用Cocos2d-x开发一个游戏?

[Cocos2d-x相关教程来源于红孩儿的游戏编程之路 CSDN博客地址: http://blog.csdn.net/honghaier ] 红孩儿Cocos2d-X学习园地QQ群:249941957 加群写:Cocos2d-x 如何利用Cocos2d-x开发一个游...

长平狐
2012/11/19
297
0
如何利用Cocos2d-x开发一个游戏?

[Cocos2d-x相关教程来源于红孩儿的游戏编程之路 CSDN博客地址: http://blog.csdn.net/honghaier ] 红孩儿Cocos2d-X学习园地QQ群:249941957 加群写:Cocos2d-x 如何利用Cocos2d-x开发一个游...

长平狐
2013/03/19
482
0
Cocos2d-x纹理优化的一些方案

[Cocos2d-x相关教程来源于红孩儿的游戏编程之路CSDN博客地址:http://blog.csdn.net/honghaier] 红孩儿Cocos2d-X学习园地QQ群:249941957 加群写:Cocos2d-x 本章为我的Cocos2d-x教程一书初稿...

长平狐
2012/11/19
3.1K
0
Cocos2d-x 2.0 TestCpp之场景切换动画深入分析

[Cocos2d-x相关教程来源于红孩儿的游戏编程之路CSDN博客地址:http://blog.csdn.net/honghaier] 红孩儿Cocos2d-X学习园地QQ2群:44208467加群写:Cocos2d-x 红孩儿Cocos2d-X学习园地QQ群:2...

长平狐
2013/03/19
4.4K
0
Cocos2d-x纹理优化的一些方案

[Cocos2d-x相关教程来源于红孩儿的游戏编程之路CSDN博客地址:http://blog.csdn.net/honghaier] 红孩儿Cocos2d-X学习园地QQ群:249941957 加群写:Cocos2d-x 本章为我的Cocos2d-x教程一书初稿...

长平狐
2013/03/19
177
0

没有更多内容

加载失败,请刷新页面

加载更多

Tensorflow 2.0安装

Tensorflow2.0安装环境: Ubuntu 16.04或更高(64位) Windows 7或者更高(64位,且支持python3) 安装Tensorflow 2.0 GPU版本的需要安装NVIDIA相关软件包: NVIDIA驱动 :版本必须410.x或更...

JosiahMg
26分钟前
4
0
TL138/1808/6748F-EasyEVM开发板硬件、CPU、FLASH、RAM

TL138/1808/6748F-EasyEVM是广州创龙基于SOM-TL138/SOM-TL1808/SOM-TL6748F核心板开发的一款开发板。由于SOM-TL138/SOM-TL1808/SOM-TL6748核心板管脚兼容,所以此三个核心板共用同一个底板。...

Tronlong创龙
34分钟前
4
0
百度嵌入式AI解决方案EdgeBoard之内存驱动设计介绍

1. 背景介绍 由于 FPGA 具备可编程和高性能计算的特点,基于FPGA硬件的AI计算加速,正广泛地应用到计算机视觉处理领域。其中极具代表性的部署方式之一就是使用FPGA和CPU组合构成异构计算系统...

AI君
40分钟前
6
0
开放应用模型(OAM):全球首个云原生应用标准定义与架构模型

Kubernetes 项目作为容器编排领域的事实标准, 成功推动了诸如阿里云 Kubernetes (ACK)等云原生服务的迅速增长。但同时我们也关注到,Kubernetes 的核心 API 资源比如 Service、Deploymen...

Mr_zebra
43分钟前
4
0
《Linux操作系统-Exynos4412》编译和安装Busybox

开发环境:Exynos4412-iTOP-4412开发板 现在 Busybox 的配置已经完成了,接下来开始编译 Busybox,在 Ubuntu 的终端输入 “make”命令开始编译 Busybox,如下图。 下图为编译过程中的截图。 ...

书白
46分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部