在 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 动画 的相关文章

  • ActionScript 3.0 中缺少运算符重载

    我在 ActionScript 中最怀念的事情之一是缺少运算符重载 特别是 我通过在我的类中添加 Compare 方法来解决这个问题 但这在很多情况下没有帮助 比如当你想使用内置字典之类的东西时 有没有好的方法来解决这个问题 Nope 但添
  • AS3 是否可以复制 Shape 对象?

    我正在尝试制作一个可用于复制的形状 这是我所做的 我正在尝试做的以及我陷入困境的解释 在 Flash IDE 画笔 中手动绘制形状 创建了一个包含形状的新影片剪辑 作为一个类导出 实例化该类 var mc MovieClip new sha
  • 求反射角的弧度

    我正在编写一个简单的 Flash 游戏 只是为了学习 Flash 并提高我的数学能力 但我对弧度感到非常困惑 因为这对我来说是新的 到目前为止 我所做的是使用鼠标 单击并释放 使用弧度向该方向射出一个球 现在我想要发生的是 当球撞到墙壁时
  • 自定义 UITableViewRowAnimation 或持续时间

    我有一个用户可以拖动的应用程序UITableViewCells从一TableView到另一个 我通过在用户触摸的 UITableViewCell 顶部渲染一个 虚拟 单元格来实现此目的 并禁用 真实 单元格 然后我在目标中插入一个新行UIT
  • Silverlight - 动画贝塞尔曲线画线?

    我正在构建一个小型 Silverlight 应用程序 在我的应用程序中 我需要绘制线条 类似于附图中所示的内容 我知道绘制拱形连接线 绿色 的最佳方法是使用贝塞尔曲线 我的问题是 如何对线条的绘制进行动画处理 让它们从起始 X Y 坐标开始
  • Webpack 5 - 资产模块 - 缺少 url-loader 功能 - postTransformPublicPath

    我想按照建议切换到 webpack 5 asset 模块 不幸的是我错过了 webpack url loader 的函数 postTransformPublicPath path any gt any 由于我们应用程序的结构 资产的公共区域
  • 如何在动作脚本 3 中设置/访问外部 swf 文件的动态文本字段?

    我正在处理一个 fla 文件 其中添加了一个 swf 文件 我如何在该 swf 文件的动态文本上设置文本 有没有直接设置文本的方法 我不想在 url 中作为参数传递 我试过这样 var rq URLRequest new URLReques
  • Flash 未在调试播放器中显示错误/堆栈跟踪(firefox/chrome/whatnot)

    我正在尝试调试在线默默地失败的应用程序 我 100 确定我正在运行 Flash 调试播放器 为了确保我不会丢失它 我故意抛出一个错误 但 Flash 在浏览器中没有显示任何 stracktrace 我快要失去它了 有什么线索吗 我正在 ch
  • 如何查看Android Asset资源?

    我想检查 assets 文件夹中是否存在文件 我怎样才能做到呢 请帮忙 我向我的应用程序类之一添加了一个辅助方法 我假设 应用程序运行时 资产列表不会更改 the List
  • 从 Android 中的过渡动画中排除 BottomNavigation

    我一直在四处寻找 但找不到有助于解决这个特定问题的答案 我的应用程序有一个自定义滑入 滑出效果 如下所示 Intent intent new Intent getApplicationContext MyActivity class sta
  • Flash 照片上传 - 从网络摄像头拍摄照片 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 问号运算符“?”的含义Haxe 中的参数之前

    这两个函数签名有什么区别 function f i Int 0 function f i Int 0 参数是否带有前缀似乎没有任何区别 两者都编译良好 确实没有理由使用 在这个例子中 但是有一个区别 On a 静态类型目标 https ha
  • 如何默认显示动画控件

    在mathematica中这个简单的控制对象中 如下所示 Control x 0 1 我们必须将鼠标指针移至对象的右上角才能获得名为 显示动画控件 的提示 然后单击它以查看播放 前进等动画控件 有没有办法通过设置一些选项来默认情况下打开所有
  • 资产未考虑基本 href url - 未找到错误

    我刚刚在 Webform 项目中复制了 Angular 构建脚本 并将该项目部署到 IIS 中 注意 我只复制了脚本文件 没有单独部署在 IIS 中 我已将 Angular dist 文件夹复制到 Webform 项目的 Scripts 文
  • 如何正确删除动画集中引用的 Raphael SVG 元素?

    我有一组动画 Raphael SVG 元素 我正在通过用户发起的 ajax 调用添加新元素并删除旧元素 我 set push 新元素 但因为我需要删除的元素通常不是集合中的最后一个元素 所以我使用 element remove 而不是 se
  • Java 动画中的跳跃和撕裂

    以下代码绘制一个正方形 其中两个较小的正方形在其中旋转 每当你点击键盘上的箭头时 整个系统就会朝那个方向移动 然而 我遇到了一些图像撕裂和有时跳过的问题 它很小但仍然存在 我想知道是否有人知道如何在不大规模更改代码的情况下解决这些问题 im
  • 如何通过命令行将Flash .fla编译为.swf? [复制]

    这个问题在这里已经有答案了 如何在基于 Windows 的操作系统上通过命令行将 Flash fla 文件编译为 swf 需要安装的命令行工具就可以了 谁能建议我该怎么做 以直接的方式 谢谢 您可以使用JSFL为 Flash IDE 编写脚
  • Sails js 路由静态 html

    我想在我的 sails js 应用程序中完全分离客户端和服务器端 如果我删除 路由 它将自动从 assets 文件夹中提供一个名为index html的文件 我想从资产文件夹中提供另一个文件 我该怎么做 如果你看看 sails 使用的中间件
  • 在 Javascript 中检测 Flash 文件何时完成播放

    我正在使用 Javascript 将 Flash 文件嵌入到网站中 然后需要在播放完成后将其删除 有没有办法用普通的 Javascript 来做到这一点 或者是否需要将回调类型的函数添加到 Flash 文件本身 我该如何编码 JavaScr
  • 创建即用型 symfony 2 应用程序 zip

    我创建了一个 symfomy 应用程序包 可用于从 Android 应用程序收集崩溃报告 对于那些对 Android 和 ACRA 感兴趣的人 https github com marvinlabs acra server https gi

随机推荐

  • 使用 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 支持吓跑了许多开发人员 我对此主题的研究使