DragonBones 官方C++版本 for cocos2d-x
DragonBonesCPP for cocos2d-x
DragonBones 和 CCArmature
DragonBones 是一套骨骼动画工具集,最早使用 Flash 和 ActionScript 3.0 语言开发,主要在 Flash 游戏中使用,目前在页游和手游项目中使用很广泛。
DragonBones 目前包含下面这些内容:
- 基于 Flash IDE 中时间轴动画的编辑工具(美术GGMM的最爱);
- 基于 Flash IDE 插件的骨骼动画设计面板 DesignPanel;
- 基于 ActionScript 3.0 的骨骼动画解析库和渲染库;
- 基于 Javascript 的骨骼动画解析库和渲染库;
- 基于 Unity3D C# 脚本的骨骼动画解析库和渲染库;
- 基于 LoomScript 的骨骼动画解析库和渲染库。
详细的入门介绍可以看这里:DragonBones快速入门指南 。
cocos2d-x 中自带的 CCArmature 移植自 DragonBones 2.1 版本,我对 DragonBones Design Panel进行了修改 cocos2d-x专用的DragonBones2.2 ,使其直接输出让 CCArmature 支持的资源格式。
CCArmature 的问题
CCArmature 的移植并不完善,主要有下面这些问题:
- 不支持逐帧动画;
- 对嵌套骨骼支持不力;
- 没有实现关键帧事件;
- 不支持将某个Bone替换成逐帧动画;
- 完全针对 cocos2d-x 优化,与DragonBones的API不兼容;
- cocos2d-x中CCArmature展示挤压和变形动画的问题 ;
- 等等等……
另外,为了支持 cocostudio 的特性,CCArmature 进行了许多不兼容 DragonBones 的修改,导致新版本的 CCArmature 对 DragonBones Design Panel 生成的资源格式的支持也不好了。详情见:在cocos2d-x中使用DragonBones实现骨骼动画 。
DragonBonesCPP
正是因为这些问题,DragonBones 开发组 使用 C++ 移植了 DragonBones 的解析库和动画渲染库,命名为 DragonBonesCPP 。它的特点如下:
- 这套库完全与 ActionScript 3 库保持一致,可以实现 ActionScript 3 库的所有功能;
- 使用 DragonBones 官方的 Design Panel,不再需要使用专门针对cocos2d-x的修改版,可保持数据格式与最新版兼容;
- 由于支持官方 DragonBones Design Panel 输出的格式,因此也可以支持 Spine 的格式;
- 支持多套渲染引擎,不再仅限于cocos2d-x。
目前,DragonBonesCPP 首先完成了对 cocos2d-x 引擎的支持。下面是一些Demo:
- DragonBonesCPP for cocos2d-x 2.x
DRAGONBONES 官方C++版本 FOR COCOS2D-X
- DragonBonesCPP for cocos2d-x 3.x
- DragonBonesCPP for quick-cocos2d-x
已知的问题:
- DragonBones Design Panel 可以导出多种资源格式,但 DragonBonesCPP 仅支持 XML+PNG 格式;
- 有一些内存泄露;
- 没有做异步资源加载,可能会导致在加载资源时候的性能问题。
更进一步
DragonBones 开发组将继续更新该库,解决现有问题,并保证对 cocos2d-x 引擎的兼容。
喜欢用 Flash 编辑骨骼动画(或者讨厌用CCS编辑骨骼动画)的同学们,是时候了!