在 quick-cocos2d-x 中使用 DragonBonesCPP

在 quick-cocos2d-x 中使用 DragonBonesCPP

Using DragonBonesCPP in quick-cocos2d-x.

2014-07-31更新:三件事已经全部搞定,DragonBonesCPP已经推送到了quick-cocos2d-x 官方库。


1 前言

DragonBones 官方C++版本 for cocos2d-x 这篇文章中,我已经简单地介绍过了 DragonBonesCPP 这套用于取代 CCArmature 的库。

在我自己修改的 quick-cocos2d-x 版本中,我已经把 CCArmature 库删除,完全使用 DragonBonesCPP 。

我们的产品也完全使用 Flash 和 DragonBonesCPP 来制作骨骼动画。所有AS3版本的DragonBones提供的功能,在CPP版本中都能完整地实现。

几个月之前,我就已经将 DragonBonesCPP 整合到了 quick-cocos2d-x 中,只是一直没有向官方库推送PR。这也是因为有几个内存泄露的BUG还没有解决。

现在,我终于有时间可以来做这件事。我的计划如下:

  1. 写一篇关于 DragonBonesCPP 的教程(quick专用哦);
  2. 解决 DragonBonesCPP 的遗留问题,并进一步封装lua api方便使用;
  3. 将 DragonBonesCPP 推送到quick的官方仓库。

那么,这篇文章就是第一件事了。 继续阅读在 quick-cocos2d-x 中使用 DragonBonesCPP

DragonBones 官方C++版本 for cocos2d-x

DragonBones 官方C++版本 for cocos2d-x

DragonBonesCPP for cocos2d-x

DragonBones 和 CCArmature

DragonBones 是一套骨骼动画工具集,最早使用 Flash 和 ActionScript 3.0 语言开发,主要在 Flash 游戏中使用,目前在页游和手游项目中使用很广泛。

DragonBones 目前包含下面这些内容:

  1. 基于 Flash IDE 中时间轴动画的编辑工具(美术GGMM的最爱);
  2. 基于 Flash IDE 插件的骨骼动画设计面板 DesignPanel
  3. 基于 ActionScript 3.0 的骨骼动画解析库和渲染库
  4. 基于 Javascript 的骨骼动画解析库和渲染库
  5. 基于 Unity3D C# 脚本的骨骼动画解析库和渲染库
  6. 基于 LoomScript 的骨骼动画解析库和渲染库

详细的入门介绍可以看这里: 继续阅读DragonBones 官方C++版本 for cocos2d-x

管理带有子模块的git库(以 DragonBonesCPP 为例)

2015-09-06 更新: 加入 删除子模块 的内容。


DragonBonesCPP 是一个包含子模块的库,在 clone/commit/push 的时候需要一些额外的操作。

本文将描述这些操作。

子模块(submodule)

限(wei)于(le)篇(tou)幅(lan),请自行学习下面的内容:

clone DragonBonesCPP

蛋碎方法一

git clone --recursive git@github.com:DragonBones/DragonBonesCPP.git

使用这个方法,将会自动 clone 该项目下的所有子模块。这其实是最简单的方法了。

为什么说它令人蛋碎呢?因为 DragoneBones 中包含的 engines/cocos2d-x 子模块也包含子模块。

这样就出现了嵌套子模块,一个 cocos2d-x 的所有历史加起来就超过1G了,再加上子模块的所有历史,这就……。 继续阅读管理带有子模块的git库(以 DragonBonesCPP 为例)

获取CCArmature动画的播放状态

获取CCArmature动画的播放状态

本文介绍如何在 CCArmature 播放的过程中获取动画的播放状态。例如,如何判断 “死亡” 动作已经播放完毕了?如果知道一个 “循环” 动作已经播放了一次?,提纲如下:

  1. 先决条件;
  2. 必要知识;
  3. MovementEventSignal 的用法。

继续阅读获取CCArmature动画的播放状态

cocos2d-x中CCArmature展示挤压和变形动画的问题

还是cocos2d-x,还是DragonBones。

已经写了两篇关于cocos2d-x和DragonBones的文章了,对它们两位感兴趣的,可以参考一下:

为了提升骨骼动画的表现力,我们对部分骨骼做了倾斜、缩放、变形的操作,在DragonBones中表现正常。这样,我们可以比较方便的实现呼吸、压扁这类特效,它们的变化虽然比较小,但是对整个动画的质量和表现力来说,会产生非常大的提升。

可是,这样的效果在CCAramture中表现不正常。

在对整个动画使用压扁效果的时候,在CCArmature中,相关的几个部件在压扁的过程中表现得好像被拉开了,好像外部有几个力希望把几个骨骼部件拉散一样。而在DragonBones中表现的是整体压扁。

我看了一下CCArmature包,发现这个包实际上是把AS3写的DragonBones用C++移植了一遍。

看来必须要看源码才能解决问题了。

cocos2d-x专用的DragonBones2.2

2015-01-31更新

依然还有朋友在问我这个版本的问题。再次重申,请 不要再使用 这个版本,DragonBones 官方团队已经提供了 DragonBonesCPP for cocos2d-x 2.x 和 3.x 版本。因此,请直接使用官方版本的 DragonBones Panel + DragonBonesCPP,它们会提供所有 AS3 版本的所有功能。

详情参考下面的两次 重要更新

重要更新 2014-07-15

在 quick-cocos2d-x 中使用 DragonBonesCPP

重要更新 2014-04-28

DragonBones 开发组已经对 DragonBones 进行了官方的 C++ 移植,很多以前我提到的问题都不复存在了。详情看这里 DragonBones 官方C++版本 for cocos2d-x


我写过一篇 在cocos2d-x中使用DragonBones ,这篇文章中提到了DragonBones插件。本篇是一个补充。

插件问题

CocoStudio官方下载页面 中提供了一个DragonBones插件,用于导出cocos2d-x可以识别的骨骼动画格式。

但是,这个插件有个问题。

在导出时,如果使用 “Zip(XML和分开的PNG)” 类型(事实上,对于cocos2d-x来说,只能选择这个选项),同时设置“导出缩放比”选项不为1的时候,导出的元数据文件中的坐标都没有经过缩放。 继续阅读cocos2d-x专用的DragonBones2.2

在cocos2d-x中使用CCArmature实现骨骼动画

在cocos2d-x中使用CCArmature实现骨骼动画

using CCArmature in cocos2d-x.

  • 2014-07-15更新:更新 在 quick-cocos2d-x 中使用 DragonBonesCPP
  • 2014-04-28更新:更新 DragonBones 官方C++版本 for cocos2d-x
  • 2013-11-19更新:更新2.2.0bug处理情况
  • 2013-10-15更新:更新2.2.0bug处理情况
  • 2013-10-12更新:加入Cocos2d-x 2.2.0 的bug
  • 2013-10-11更新:加入CocoStudio动画编辑器导入 .fla 文件注意事项

重要更新 2014-07-15

在 quick-cocos2d-x 中使用 DragonBonesCPP

重要更新 2014-04-28

DragonBones 开发组已经对 DragonBones 进行了官方的 C++ 移植,很多以前我提到的问题都不复存在了。详情看这里 DragonBones 官方C++版本 for cocos2d-x

基础知识

要看懂本文,你需要了解骨骼动画(或称关节动画)是什么,以及CCArmature 和 DragonBones是什么。下面提供了一些资料:

注意,本文讲解的是 cocos2d-x 官方版本中自带的 CCArmature 库的使用。这个库是 DragonBones AS3 库的一个不完全移植版,它的官方骨骼动画制作工具是 Cocostudio(CCS),而不是Flash。

因此,使用Flash制作的骨骼动画,可能会被CCArmaue不完全支持。尤其是在CCArmature针对CCS做了那么多修改和优化之后。

用过CCS的人都知道,这个编辑器超级难用。很难说服美术GGMM去学习这么难用且难看的软件。对于只愿意使用熟悉的工具的美术GGMM来说,或许Flash就是唯一适合的。

To flash veteran: do you remember the ‘Moho’? 继续阅读在cocos2d-x中使用CCArmature实现骨骼动画