cocos2d-x-4.0 学习笔记-3: spine骨骼动画


  cocos2dx中集成了spine骨骼动画的功能,可以通过.atlas、.json、.png三个文件来生成骨骼动画。

1.使用spine前的准备

  我们在www.cocos.com中下载的cocos2d-x-4.0引擎中默认使用的spine是旧版的C风格的,且引擎在创建工程后CMAKE构建工程时默认关闭了spine,旧版4.0引擎即使开启了spine但在编译的时候仍然会出错,所以我们需要通过以下几个步骤来升级引擎中的spine模块。

1.1 下载新版引擎源码

  https://github.com/cocos2d/cocos2d-x

  去github上下载最新的源码,下载下来后解压,打开文件夹:

  先尝试运行download-deps.py,看能否下下来依赖包,不过由于网络原因应该是下不下来,我就是没有下载下来所以才通过其他途径实现。如果能完成新引擎的安装配置的话直接就使用新版的引擎构建工程,之后的步骤就都可以跳过。

1.2移植源码到原引擎

  如果无法完成新引擎的安装的话,就需要把新引擎的源码中的spine部分移植到之前我们在官网中下载的引擎当中,spine源码的路径在cocos/editor-support/spine里,打开后如图所示:

 

 我们复制所有此文件夹下的内容,将我们原来的引擎的这个文件夹中的内容清空后再粘贴进来。

1.3在cmakelist中开启spine模块

  在原引擎目录下的cocos文件夹中有一个CMakeList文件,打开它后搜索spine,会看到如下图所示内容:

 

   将该行后面的OFF改为ON,保存退出。

1.4构建工程

  然后使用引擎去构建工程,此时得到的工程就是集成了C++风格spine模块的工程了。

 

2.创建骨骼动画

  使用骨骼动画需要在头文件中包含#include<spine/spine.h>,#include<spine/spine-cocos2dx.h>。

1. 直接创建骨骼动画

1     auto dragonanimaion = SkeletonAnimation::createWithFile("C:/dragon.json", "C:/dragon.atlas");//通过.json和.atlas两个文件创建骨骼动画
2     dragonanimaion->setAnimation(0, "flying", 1);//设置骨骼动画状态
3     dragonanimaion->setPosition(0,0);
4     this->addChild(dragonanimaion, 1);

  这种方法是最简单的创建骨骼动画的方法,但花费的时间较长,构造动画语句在运行时花费了70ms的时间,这对于一个游戏来说时不可接受的,所以要对动画进行预加载。

2. 预加载后创建骨骼动画

  通过对SkeletonAnimation::createWithFile()函数源码的观察我们得到了如下的方法来创建一个骨骼动画数据

1     TextureLoader* textureLoader = new Cocos2dTextureLoader();
2     auto _atlas = new (__FILE__, __LINE__) Atlas("C:/dragon.atlas", textureLoader, true);//加载.atlas
3     auto _attachmentLoader = new (__FILE__, __LINE__) Cocos2dAtlasAttachmentLoader(_atlas);
4     SkeletonJson json(_attachmentLoader);
5     json.setScale(1);
6     SkeletonData* skeletonData = json.readSkeletonDataFile("C:/dragon.json");//加载.json后得到骨骼动画数据

   在游戏的loading界面将我们所要使用的骨骼动画用上述方法预加载后,使用时调用SkeletonAnimation::createWithData(skeletonData)就可以创建出动画,所使用的时间小于1ms,这样在游戏过程中创建动画就不会导致帧率降低了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM