Cocos2d-x 中加载骨骼动画资源

来源:互联网 发布:seo实战密码 epub 编辑:程序博客网 时间:2024/04/30 08:22

在讲骨骼动画之前我们先了解一下创建骨骼动画的编辑器

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和动画编辑器,使小伙伴们的使用更加自由。至于想要更清楚的了解骨骼动画编辑器,可以到网上查找。

那么接下来我们介绍一下如何加载骨骼动画资源

 在Cocos2d-x程序中使用Cocos Studio动画首先需要包含相关头文件,如下

 #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);






1 0