在讲骨骼动画之前我们先了解一下创建骨骼动画的编辑器
Cocos Studio
cocos Studio是一套基于Cocos2d-x的免费游戏开发工具集,它能帮助开发者快速创建游戏资源,将大部分繁琐的游戏开发工作使用编辑器来快速制作,进一步帮助游戏开发者减短开发周期、提高开发效率。
Cocos Studio本身不光只是针对骨骼动画的编辑而设计的,它还提供了UI、场景和数据等信息的编辑工作。就当前的Cocos Studio而言,主要分两种,一种是Win版本的Cocos Studio,另一个则是刚刚发布不久的Mac版 Cocos Studio v1.0 alpha1。前者由UI编辑器、动画编辑器、场景编辑器和数据编辑器四部分组成,分别用于处理游戏中的UI界面、动画资源、游戏场景和游戏数据。而Mac版的Cocos Studio整合了原有的UI和动画编辑器,使小伙伴们的使用更加自由。至于想要更清楚的了解骨骼动画编辑器,可以到网上查找。
那么接下来我们介绍一下如何加载骨骼动画资源
#include "cocostudio/cocostudio.h"
using namespace cocostudio;
创建一个骨骼动画对象,需要将动画文件和资源文件载入到程序。这里我们通过ArmatureManager动画数据管理器来加载动画。ArmatureManager本身是一个单例,它管理整个场景中的Armature。而Armature则封装了我们播放动画需要的Animation。由此可见,这是一个三层缔结的层次结构。其中ArmatureManager最大,然后是Armature,最后是Animation。
ArmatureDataManager::getInstance()->
addArmatureFileInfo(“xxx.ExportJson”,”xxx.plist”,”xxx.png”);//三种文件
Armature* am1=Armature::create(“xxx”); //创建动画对象
am1 -> setTag(110);
am1->getAnimation()->play(“walk”)//播放动画 walk 只是其中的一项
this->addChild(am1);
am1->getAnimation()->playWithIndex(0);//播放第一组动画
//设定动画的回调函数
am1->getAnimation()->setMovementEventCallFunc([] (Armature *ani, MovementEventType tp,const std::string & name){
if (tp==MovementEventType::COMPLETE) {
CCLOG("tp%d,name:%s",tp,name.c_str());//可以输出检测一
下
if(strcmp(name.c_str(), “attack”)==0) //attack为文件中的另一组动画
{
am1->getAnimation()->play("walk");
}
}
});
//触摸后 变换动作
auto lis=EventListenerTouchOneByOne::create();
lis->onTouchBegan=[&](Touch* t,Event *e){
Armature *am2=(Armature *)this->getChildByTag(110);//由于在函数中我需要通过编号来获取上面创建的对象
am2->getAnimation()->play("stand"); //文件中的站立动画
Director::getInstance()->getEventDispatcher()
->addEventListenerWithSceneGraphPriority(lis, this);
原文链接:http://blog.csdn.net/qq_31301099/article/details/49668179