CocosBuilder2.1 结合 cocos2d-‐x2.0.3 创建动画场景
一、 下载 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动画文件
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",MainScen
eLoader::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等等,
大家可以仔细研究研究。