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,这样在游戏过程中创建动画就不会导致帧率降低了。