在cocos2dx项目中使用flash动画

时间:2013-12-03 06:43:49

标签: c++ flash animation cocos2d-x

我目前正在使用plist在我的cocos2dx游戏中使用精灵动画 我正在使用的编码语言是c ++ 现在,我想切换到flash动画,原因如下:

  1. 他们占用较低的内存
  2. 易于操作和使用
  3. 更好的质量
  4. 任何人都可以告诉我该怎么做。我只是想知道从哪里开始。

4 个答案:

答案 0 :(得分:3)

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

然而,有办法完成工作:

1)使用CreateJS等工具将动画导出为JS文件。然后创建一个脚本,将数据解析为* .plist文件,其中包含导出图像的链接,位置等。稍后使用tweener为图形设置动画。 您还需要手动绘制矢量形状并将其另存为.PNG文件,因为CreateJS不会将它们导出为PNG。但它很容易,因为CreateJS使用save API作为Flash,你可以准确地获得所有形状。

缺点是:

  • CreateJS不支持复杂渐变

  • 将JS解析为PLIST是一件痛苦的事情,我花了一整天的时间来编写它。准备好使用很多RegExp

注意:如果你在设置中使用CreateJS工具包取消选中Compact shapes选项,它将使矢量数据看起来可读。

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

缺点是:

  • 与SWF相比,文件大小会增加,因为您将每个动画的每一帧都视为光栅(除非您的矢量太复杂,以至于它们占用的空间比光栅更多)。
  • 您必须在舞台上显示所有动画,因为从库中定位MovieClip会有问题,或者如果它们不是为AS导出则无法实现。

3)潜入JS:FL并制作自己的工具,以可用的格式导出所有图形。没有缺点,但我发现它更难做到。

4)如果在MovieClip中没有MovieClip的多级动画,你只需右键点击一个动画并将其导出为一个工作表/序列,这样做很快,但你会花很多钱时间编辑FLA文件以满足要求,如果你有多个级别(你需要将父MC转换为图形,以便它可以在一个时间轴上播放)。

您可能希望以其他方式导出动画而不是精灵表或序列,例如骨骼动画,您可以在其中保存更复杂动画的每个部分以及补间/动画点列表。 我在这里写了一篇关于它的文章:Using SWF animation in Haxe/OpenFL applications这不是关于COCOS的,但它适用于普遍使用平台的任何技术。

正如你所看到的那样,并不是所有的坏消息,但你必须为此做一些编码,因为没有公共工具可以做到这一点。我必须制作上面列出的所有工具,我建议你坚持第一选择。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

您可以将Flash动画导入CocoStudio工具,然后您可以为Cocos2d-x项目创建或导出动画。

查看Cocos2d-x-2.2版本。 TestCpp项目中的扩展类别中包含许多示例。

查看CocoStudio工具http://www.cocos2d-x.org/download

答案 3 :(得分:0)

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

在iOS / cocos2d中导出和动画Flash符号的简单库,包含示例。

  

工作流:

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

在github上查看:

这是我的第一个github提交,我很好奇人们如何找到它,所以请告诉我。