尽管 Haxe 在 NME/OpenFL 方面取得了巨大成就,但从 AS3 开发过渡的最大问题是资产。尽管 Haxe 与 as3 很相似,而且 OpenFL 试图提供熟悉的 API,但缺乏 SWF 支持吓跑了许多开发人员。
我对此主题的研究使我了解到,当前的 SWF 相当薄弱且存在缺陷,需要对 SWF 文件进行许多编辑才能在 Haxe 中运行它。
问题是如何在 OpenFL 应用程序中使用 SWF 动画,或者如果不使用 - 您找到的有关渲染时间、处理器时间和文件大小的最佳解决方案是什么。
在花费了更多时间进行研究并询问其他开发人员后,我整理了一小部分使用 SWF 资产的可能替代方案动画片。希望它能帮助其他在 SWF 动画支持较弱时遇到类似问题的开发人员。
注意:所有方法的选择都考虑了对我来说很重要的三个因素:所有平台上的可用性、资产的性能和文件大小。因此并未包括所有可能的方法。
测试平台:HTML5、Android、iOS
SWF动画Haxe/OpenFL 可以实现,但有一些规则:没有补间 - 所有动画都是逐帧的。矢量艺术应缓存为位图、保存为位图或预渲染为位图序列,因为在某些平台(例如 neko)上,矢量艺术正在转换为具有难看的咬边的光栅。如果将 MovieClip 表示为图形,则会报告一些错误,反之亦然,但我没有注意到 HTML5、Flash、iOS、Android 版本上有任何错误。如果循环,嵌套动画有时可能会跳过帧(也没有看到这一点,也许旧版本的 NME/OpenFL 会这样做)。我想说,从文件大小和平台可用性的角度来看,这是一种相当好的动画内容方式,但编辑所有资源以满足 Haxe 支持的要求是一件令人头痛的事情。而且以后重用这些资源并不有趣,因为它们都是逐帧动画,而且很混乱。
精灵表动画。由于渲染性能更高,主要用于 HTML5 目标。这直接来自 openGL 标准,因此该方法应该适用于所有 openGL 目标。其想法是宁愿拥有一个大文件并节省打开/加载多个较小文件的时间。性能良好,适用于所有测试的平台,但文件大小很快就会失控,并且很难用于对象大小变化的动画 - 产生不必要的大透明空间,旋转图像以最适合空间会减少通过在运行时编辑变换矩阵来提高渲染性能。
帧序列又名 PNG 序列动画。个人最喜欢的。它在所有平台上运行良好且快速,可以预渲染动画(就像上面的任何其他方法一样)、转换为 BitmapData 数组、流加载等。does动画占用大量磁盘空间,但可以通过在使用它们之前加载资源(HTML5、SWF)来软化,这对于移动设备来说并不重要 - 因为即使是 1-2GB 的应用程序也适合市场。我自己发现的一大优势是,这种类型的资源可以用于任何其他开发标准(C++、Java、cocos2d),并在需要时另存为 Sprite 表(例如,cocos2d,如 HTML5 更喜欢 Sprite 表,而不是用其他语言编写的) Roger Engelbert 的官方书籍 COCOS2DX)。
有了这种灵活性,良好的性能是可以容忍的文件大小,与上面列出的任何其他方法相比,我更喜欢这种方法。
骨骼动画-PNG数组+属性列表。另一种方法是为每个帧提供单独的动画对象图像和每个图像矩阵数据。这样,就可以使用最少的磁盘空间制作数千个动画。缺点是:为更复杂的动画提供嵌套动画更困难(并非不可能),恒定的矩阵转换限制了显示列表上活动动画的数量(对于 HTML5 来说是可怕的方法,其他平台保持得很好),并且资源的可重用性很小。通常导出为这种类型的都是同样好的旧 SWF 资源,因此编辑 FLA 而不是骨骼动画本身是有意义的。
当然,我错过了一些要点,有很多方法可以制作图形动画,有些方法可能比其他方法更适合您,所以请随意发表评论和批评,但我仍然希望这个主题对您有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)