animation - 在Haxe/OpenFL应用程序中使用SWF动画

标签 animation flash assets haxe openfl

和Haxe一起使用NME/OpenFL一样,从AS3开发过渡到大问题是 Assets 。 Haxe与as3相似,而OpenFL试图提供熟悉的API,但缺少SWF支持使许多开发人员感到恐惧。
我对该主题的研究使我了解到,当前的SWF相当薄弱且有错误,需要对SWF文件进行许多编辑才能在Haxe中运行它。

问题是如何在OpenFL应用程序中使用SWF动画,或者不使用SWF动画-找到的关于渲染时间,处理器时间和文件大小的最佳解决方案是什么?

最佳答案

花了更多的时间在研究上,并请其他开发人员整理了一些 list ,列出了将SWF Assets 用于动画的可能选择。希望它将对其他开发人员有所帮助,这些开发人员在SWF动画支持薄弱的情况下也遇到类似的问题。

注意:选择所有方法时都考虑到三个对我很重要的因素:所有平台上的可用性,性能和 Assets 的文件大小。因此,并未包括所有可能的方法。

经过测试:HTML5,Android,iOS

  • 使用Haxe/OpenFL可以制作SWF动画,但规则很少:无补间-所有动画都是逐帧显示的。矢量艺术应作为位图缓存,保存为位图或预先渲染为位图序列,例如在某些平台上(例如neko),矢量艺术已被转换为具有难看的被咬边缘的光栅。如果将MovieClip表示为图形,则报告了一些错误,反之亦然,但是我没有注意到有关HTML5,Flash,iOS,Android版本的任何错误。如果循环播放,嵌套的动画有时可能会跳过帧(也没有看到,也许是较旧的NME/OpenFL做到了)。我想说这是从文件大小和平台可用性的角度对内容进行动画处理的一种很好的方法,但是编辑所有 Assets 以满足Haxe支持的要求却令人头疼。以后再使用这些 Assets 并不是一件有趣的事情,因为它们都是逐帧动画,而且一团糟。
  • Sprite工作表动画。由于具有更高的呈现性能,因此主要用于HTML5目标。这直接来自openGL标准,因此此方法应适用于所有openGL目标。这样做的想法是拥有一个大文件,并节省打开/加载多个较小文件的时间。性能良好,可以在所有经过测试的平台上使用,但是文件大小很快就变得不可用了,几乎不能用于对象大小不断变化的动画中-产生了不必要的大透明空间,旋转图像以使其最适合该空间会减小通过在运行时编辑转换矩阵来实现渲染性能。
  • 帧序列又名PNG序列动画。个人最爱。它可以在所有平台上良好且快速地运行,可以预渲染动画(就像上面的任何其他方法一样),转换为BitmapData数组,流加载等。确实占用了动画的大量磁盘空间,但是可以通过在使用 Assets 之前加载 Assets (HTML5,SWF)来使其软化,这对于移动设备而言并不重要-因为即使是1-2GB的应用程序也可以进入市场。我为自己找到的最大好处是,这种 Assets 可以用于任何其他开发标准(C++,Java,cocos2d),并在需要时另存为Sprite工作表(例如,cocos2d,例如HTML5更喜欢Sprite工作表,而不是其他书面形式) (Roger Engelbert撰写的官方书COCOS2DX)。由于具有这种灵活性,因此文件大小可以容忍良好的性能,因此,与上面列出的任何其他方法相比,我更喜欢这种方法。
  • 骨骼动画-PNG数组+属性列表。另一种方法是使动画对象具有单独的图像以及每帧的每个图像矩阵数据。这样,使用最少的磁盘空间就可以制作成千上万的动画。缺点是:很难(不是没有可能)为更复杂的动画设置嵌套动画,不断的矩阵变换限制了显示列表中事件动画的数量(HTML5的可怕方法,其他平台仍然存在), Assets 的可重用性很小。通常,与导出到此类型的旧SWF资源相同,因此,编辑FLA而不是骨骼动画本身是有意义的。

  • 当然,我错过了一些要点,有很多方法可以对图形进行动画处理,并且有些方法可能比其他方法更适合您,因此可以随意发表评论和批评,但是我仍然希望这个主题对您有所帮助。

    关于animation - 在Haxe/OpenFL应用程序中使用SWF动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18222008/

    相关文章:

    Java:制作一个漂亮的 JProgressBar

    python - (python) matplotlib 动画不显示

    flash - 如何在 Flash 客户端中操纵多个声音对象的位置,然后将它们混合在一起?

    php - 做一个视频分享网站,需要一个视频播放器

    java - Android:File()的 Assets 文件夹路径?

    javascript - 为什么我的 jQuery SlideDown 动画滞后/跳跃?

    css3 变换 :scale doesn't work in Safari

    flash - 支持 crossdomain.xml 以允许 Flash 和 Silverlight 访问的站点

    yii - Yii-如何使Yii重新发布到 Assets 文件夹

    php - Symfony Twig 样式表