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

2024-01-23

尽管 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(使用前将#替换为@)

在 Haxe/OpenFL 应用程序中使用 SWF 动画 的相关文章

  • 我可以将 Pepper Flash 捆绑在 Electron.js 应用程序中以在 2021 年以后运行 Flash 吗?

    所以 我已经关注了https www electronjs org docs tutorial using pepper flash plugin https www electronjs org docs tutorial using p
  • 我可以使用文本叠加执行类似 imsave() 的操作吗?

    我在用imsave 依次制作许多 PNG 我将它们合并为 AVI 并且我想添加移动文本注释 我用ImageJ http imagej nih gov ij features html制作 AVI 或 GIF 我不需要轴 数字 边框或任何东西
  • 在 OpenGL ES 1.1 中创建闪电

    我需要使用 OpenGL ES 1 1 iPhone 创建漂亮的闪电 并计划使用着色器 然而 当我在上一个问题中询问它时 OpenGL ES 1 x 着色器 https stackoverflow com questions 543948
  • 不透明动画在 IE 上不起作用

    我有一个动画菜单 其中包含一些级联不透明动画 这些动画在打开菜单和悬停每个按钮时执行 它只是每 100 毫秒向菜单上的每个图标添加 colorHigh 类 你可以看到一个现场演示在这里 http germanalvarez net 5 la
  • 使用动画更新布局

    我有一个继承自 LinearLayout 的自定义视图 它包含一个按钮 和一个编辑文本 EditText 的初始可见性设置为 GONE 什么时候 按下按钮我希望 EditText 出现动画效果 所以 我制作了一个 ScaleAnimatio
  • 我怎样才能有一个像这样的动画SliverAppBar?

    我希望这些动画之间能够平滑 我尝试使用AnimatedSize AnimatedOpacity and AnimatedPositioned但几乎没有错误 我不知道如何使用这些SliverAppBar 在其他例子中我看到人们使用Layout
  • [UIView beginAnimations] 如何工作?

    我想知道 Cocoa Touch 中的动画是如何工作的 例如 UIView beginAnimations nil context nil UIView setAnimationDuration 1 0 view1 alpha 1 0 vi
  • WPF XAML 网格可见性触发器

    我的网格第一行有一条状态消息 我希望它在可见性发生变化时滑入和滑出 第一个可见性触发器效果很好 可以快速打开第一个网格行 一旦我添加 折叠 触发器 就什么都不起作用了 当可见性设置为折叠时 如何反转动画以滑动关闭
  • 如何在 Windows 8 Metro 应用程序中制作导航动画?

    在使用 HTML 的 Metro 应用程序中 建议使用片段导航到不同的页面 在这里解释 http msdn microsoft com en us library windows apps hh452768 aspx navigation
  • Android和播放SVG动画

    我正在编写一个 Android 应用程序 我想播放一个简单的 SVG 动画 我知道 Android 不提供 SVG 支持 我在这里有什么选择 从 Android Lollipop API 级别 21 开始 可以使用动画矢量Drawable
  • WPF 动画:如何使其滑入?

    所以我刚刚进入动画领域 我想做一个 滑出 动画 我成功地做到了 但现在我希望它通过单击同一个按钮滑入 就像我单击它 它滑出 然后我希望当我再次单击它时它滑回 后面没有任何代码 所以只需通过 xaml 这是 XAML
  • 高级 XAML 动画效果。脉冲、行进的蚂蚁、旋转。警报

    我有一个警报列表 当警报被激活时 要求使其更加引人注目 当警报状态发生变化时 我想在该项目周围创建脉冲外发光几秒钟 然后让它消失 我遇到的问题是我似乎无法仅在需要时才出现 DropShadowEffect 我尝试将不透明度设置为 0 将颜色
  • 在 Rails 应用程序中查找未使用的图像?

    我熟悉类似的工具自重 http github com aanand deadweight用于查找 Rails 应用程序中未使用的 CSS 但图像是否存在任何内容 我正在参与一个项目 其中包含与各种设计师合作的大量资产目录 并且我正在努力减少
  • ActionScript 2 移动对象

    我对 ActionScript 知之甚少 我有一个电影剪辑 我希望当我按下按钮 按钮或影片剪辑 时它沿 x 轴移动我不知道要使用什么代码 因为它需要是 Action Script 2 是否有教程或其他东西可以完成此任务 我找到了一个教程 当
  • HTML5旋转动画——如何显示“硬币的另一面”?

    考虑到这个 JSFiddle 旋转示例 https jsfiddle net 194288aw HTML div class container div class coin div class face heads Hey div div
  • Flash AS3 EventDispatcher - 有什么方法可以获取已注册侦听器的列表吗?

    有没有什么方法可以获取注册监听器的列表EventDispatcher 我知道EventDispatcher有hasEventListener方法告诉您是否注册了任何侦听器 但是有没有一种简单的方法来询问EventDispatcher找出听众
  • Flex PopUpManager:如何检测模式弹出窗口的存在?

    我的 Flex 3 应用程序有一些通过 PopUpManager 显示的模式对话框 但有时我希望其他视图组件知道有弹出窗口显示 PopUpManager 没有任何方法来实际检查弹出窗口是否存在 有没有其他方法可以在 flash flex 中
  • 3D 旋转 - 透视

    public class MainActivity extends Activity LinearLayout rotator protected void onCreate Bundle savedInstanceState super
  • 对象克隆库的 Flash 复制?

    这可能是一个非常简单的问题 我只是不知道如何解决 我有一个想要复制的对象 但不知道如何进行 这是我的尝试 var myObj new ObjectClass var duplicate myObj duplicate null myObj
  • 在requestAnimationFrame中使用clearRect不显示动画

    我正在尝试在 HTML5 画布上做一个简单的 javascript 动画 现在我的画布是分层的 这样当我收到鼠标事件时 背景层不会改变 但带有头像的顶层会移动 如果我使用 requestAnimationFrame 并且不清除屏幕 我会看到

随机推荐

  • 使用 JPL 查询 Prolog 变量

    我想通过JPL进行查询以在java中使用Prolog 我阅读了文档 http www swi prolog org packages jpl java api getting started html prolog 谓词如下 child o
  • 如何避免标题后立即分页

    我有一个 HTML 4 01 CSS 2 1 文档 其中包含一个 H3 标题 后跟一个短 一行 段落块 然后是一个包含多个项目的无序列表 h3 Heading h3 p Some things p ul li Thing one li li
  • PowerShell 和 MS Access 数据库

    我们想使用 PowerShell 创建 AD 用户 使用 CSV 这不是问题 使用脚本就很容易 下一级我们希望使用 PowerShell 和 MS Access 数据库创建 AD 用户 现在我们遇到以下问题 我们可以读取 Access 数据
  • Android 异常 - 来源未知(可能是小部件)

    我有以下 Android 异常 这是由 Bugsense 报告的 我无法找到它来自哪里 因为没有引用我的应用程序的任何类 java lang IndexOutOfBoundsException 无效索引 0 大小为 0 在java util
  • google-maps-sdk-ios - iOS 版 Google 地图 1.4.3 的 arm 7/iphone 5 问题

    我在让我的应用程序引用 iOS 版 Google 地图 1 4 3 sdk 时遇到问题 arm7 和 7s 似乎存在问题 尽管它在模拟器上运行良好 但它拒绝安装到设备 iphone 5 上 我相信我已经遵循了 google 文档中的 API
  • 触发器在两个信号的边沿触发

    我需要一个对两个不同信号的边缘做出反应的触发器 像这样的东西 if rising edge sig1 then bit lt 0 elsif rising edge sig2 then bit lt 1 end if 这样的触发器是否存在或
  • 如何在 SQLAlchemy 中使用子查询来生成移动平均线?

    我的问题是我想检索测量值列表以及这些测量值的移动平均值 我可以使用以下 SQL 语句 postgresql 间隔语法 来做到这一点 SELECT time value SELECT AVG t2 value FROM measurement
  • 如何验证 update_all 是否确实在 Rails 中更新

    鉴于此代码 def create upgrades User update all role upgraded id gt params upgrade redirect to admin upgrades path notice gt S
  • 如何使用 Func 配置依赖注入容器?

    BusinessAction 用于表示用户可以执行的操作 每个操作都与特定实体相关 因此 例如 如果该实体是 Order 则业务操作可以是 CancelOrder IssueRefund 等 public abstract class Bu
  • 如何正确使用 LiveData 和 RecyclerView

    我有一个从服务器加载列表的项目 这些数据最终将存储到数据库中 但目前存储在内存中的 MutableLiveData 中 RecyclerView 的适配器正在监视数据并显示它 到目前为止 一切都按预期工作 使用 FAB 用户可以发布一个新条
  • 加密 SharedPreferences 中的数据

    我目前正在开发一个用于 oAuth 1 和 2 访问 Web 服务的框架 我的问题是 如何以安全的方式存储敏感数据 例如 oAuth 访问密钥 这个密钥的问题是 像 Twitter 这样的一些平台使用永久密钥 如果有人能够访问这个密钥 他就
  • 使用 sf dplyr 计算 R 中组的点距离

    我有 2 个数据框 如果第一帧相对于第二个数据帧中的某个点 我想计算所有 POINT 几何图形之间的距离 这个问题的主要特点是我有一个grouping第一个数据帧中的变量 我想根据此分组指示器选择相应的点来测量 在第二个数据帧中 的距离 我
  • DotNetZip 从其他 zip 的子集创建 zip

    我有一个很大的 zip 文件 需要将其拆分为多个 zip 文件 在我现在创建的方法中 我有一个 List 对象 这是我得到的代码 All files have the same basefilename string basefilenam
  • 使用 d3.js 的 Pack Layout 节点中的 NaN x 和 y 值

    我正在尝试使用 d3 js 制作圆形包装图 问题是节点的 x 和 y 属性具有 NaN 值 因此所有圆都有变换 翻译 NaN NaN 杰森数据 var data name flare children name analytics chil
  • 如何在 xampp 服务器上运行 Angular 应用程序?

    我正在使用 Angular 2 和 php 进行工作 在我使用 Angular 2 开始 PHP 之前 我已经在服务器 localhost 3000 上使用 node js 完成了 Angular 2 现在使用 PHP 我如何使用 xamp
  • 在ConfigureServices方法中访问IHostingEnvironment

    我需要办理登机手续ConfigureServices方法当前托管环境名称是否为 开发 所以使用IHostingEnvironment IsDevelopment 方法对我来说可能没问题 但与配置方法不同 我没有IHostingEnviron
  • UPDATE 的 mysqli_affected_rows 有时在全行匹配时返回 0

    假设我有 MySQL 查询来更新一行 res mysqli query link UPDATE table SET val 1 WHERE id 5 if res if mysqli affected rows link gt 0 echo
  • Python Scrapy并不总是从网站下载数据

    Scrapy 用于解析 html 页面 我的问题是为什么有时scrapy返回我想要的响应 但有时不返回响应 是我的错吗 这是我的解析函数 class AmazonSpider BaseSpider name amazon allowed d
  • 如何使用 GCC 12.1 生成 C++23 堆栈跟踪?

    In the 发行说明 https www gnu org software gcc gcc 12 changes html对于 GCC12 在 运行时库 libstdc 它说 改进了实验性 C 23 支持 包括 默认情况下未构建 需要链接
  • 在 Haxe/OpenFL 应用程序中使用 SWF 动画

    尽管 Haxe 在 NME OpenFL 方面取得了巨大成就 但从 AS3 开发过渡的最大问题是资产 尽管 Haxe 与 as3 很相似 而且 OpenFL 试图提供熟悉的 API 但缺乏 SWF 支持吓跑了许多开发人员 我对此主题的研究使