在Cocos2d-x项目中使用Flash动画

3

我目前在我的cocos2dx游戏中使用plist的精灵动画。
我使用的编程语言是c++。
现在,我想因为以下原因切换到Flash动画:

  1. 它们占用更少的内存
  2. 易于处理和使用
  3. 更好的质量

有人可以告诉我如何做吗?我只想知道从哪里开始。


你是否正在使用精灵表/纹理集? - George Profenza
目前我正在使用精灵表。 - Jain
你可以在cocos2dx中使用Spine动画,而不是使用精灵动画。与精灵动画相比,Spine动画更加真实。 - Sumit Kandoi
4个回答

3
译文如下:

使用Flash的成熟动画工具确实很诱人,但不幸的是,没有“开箱即用”的解决方案。

然而,有几种方法可以完成这项工作:

1)使用像CreateJS这样的工具将动画导出为JS文件。然后编写一个脚本,将数据解析为*.plist文件,并链接到导出的图像、它们的位置等。稍后使用tweener来对图形进行动画化。 您还需要手动绘制矢量形状并将其保存为.PNG文件,因为CreateJS不会将它们导出为PNG。但是这很容易,因为CreateJS使用与Flash相同的保存API,您可以精确地获取所有形状。

缺点是:

  • CreateJS不支持复杂渐变

  • 将JS解析为PLIST非常麻烦,我花了一整天的时间编写它。准备使用大量RegExp。

注意:如果在CreateJS工具包中选择设置,取消选中紧凑形状选项,这将使矢量数据变得可读。

2)制作一个工具,读取带有动画的SWF并将每个动画保存为PNG序列或精灵表(精灵表与COCOS2dx配合使用效果更好)。

缺点是:

  • 与SWF相比,文件大小会增加,因为您将每个动画的每个帧都作为光栅图像保存(除非矢量复杂得比光栅图像需要更多空间)。
  • 您必须在舞台上拥有所有动画,因为从库中定位MovieClips很麻烦,或者如果它们未导出到AS,则不可能。

3)深入了解JS:FL,并制作自己的工具,以可用于您的格式导出所有图形。没有缺点,但我发现要做到这一点更难。

4)如果您没有多级动画,其中包含MovieClips内部的MovieClips,您可以右键单击动画并将其导出为表/序列,这样做非常快速,但如果您有多个级别,则需要花费大量时间编辑FLA文件以满足要求(您需要将父MC转换为图形,以便在单个时间轴上播放)。

您可能希望以其他方式导出动画,而不仅仅是精灵表或序列,例如骨骼动画,其中保存了更复杂动画的每个部分和tweens/动画点列表。 我写了关于它的文章: 在Haxe/OpenFL应用程序中使用SWF动画 这不是关于COCOS的,但它将适用于任何平台的任何技术。

正如您所看到的,这并非全是坏消息,但您必须进行一些编码,因为没有公共工具可以完成这项工作。我不得不制作上述所有工具,并建议您选择第一选择。


1
最好的解决方案是GAF转换器。您可以在Cocos 2dx网站上找到GAF动画播放器。 它可以帮助您将动画转换为一种格式,然后轻松地将其添加到您的项目中。

0

我为此编写了自己的轻量级解决方案。它是用Objective C / Cocos2d编写的,但您可能可以将其转换 - 它只有几个类。

一个简单的库,用于在iOS / cocos2d中导出和动画化Flash符号,并包含示例。

工作流程:

  • 使用带有动画图层的Graphic符号在Flash中创建您的动画MovieClips。
  • 使用包括的JSFL脚本将动画导出为JSON +帧PNG。
  • 将PNG转换为精灵表(使用您自己的工具,我使用http://www.codeandweb.com/texturepacker
  • 将动画JSON文件和精灵表包含在应用程序包中。
  • 加载纹理,使用简单命令在精灵上运行复杂的多层动画。

在github上查看:

这是我第一次在GitHub提交,我很好奇人们会发现它的有用性,所以请告诉我。


转换为支持 cocos2d-x 3.0 容易吗? - marzapower
我认为只要你精通Obj-C和C++,那就没问题。 - Kirill E.

0
你可以将Flash动画导入到CocoStudio工具中,进一步为Cocos2d-x项目创建或导出动画。
查看Cocos2d-x-2.2版本。在扩展类别的TestCpp项目中包含许多示例。
查看CocoStudio工具http://www.cocos2d-x.org/download

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接