javascript - APNG 在第二个页面刷新后不同步
问题描述
我有一个带有通过 APNG 图像实现的动画 UI 的应用程序。
每个块有 2 个 APNG 图像和一个 PNG 图像:
- 出现 (APNG)
- 乒乓球 (APNG)
- 静态 (PNG)
我需要在第一个动画完成后立即播放第二个动画,并且仅在触摸事件后才使 PNG 图像可见。我已经通过setTimeout
但不幸的是,在第二页刷新后浏览器完全忽略了一些动画,其中一些开始抖动,一些在不适当的时刻禁用。
我该如何解决这个问题?我可以捕捉到 APNG 动画完成的那一刻吗?APNG 图像会发出任何事件吗?
解决方案
浏览器没有任何内置支持将 APNG 视为图像以外的任何东西:无法确定 APNG 何时开始或停止播放。您可以通过将 APNG 转换为实际的视频文件格式并嵌入图像<video>
来解决此问题,因为它具有用于控制播放的 API。唉,似乎没有任何浏览器支持将 APNG 视为视频,因此您需要将其转换为另一种视频格式,例如 WebM。
如果您真的致力于不将 APNG 转换为视频文件格式,则可以通过使用pngjs之fdAT
类的库来解码 APNG、提取块,然后通过这些提取的帧手动制作动画(每个APNG 中的帧本身就是(非动画)PNG)。
推荐阅读
- selenium - 如何在 selenium 中关闭 iframe 弹出窗口
- angular - Angular 5 - HTTPClient 哪一方进行调用?
- apache-kafka - 针对特定字段检查 Kafka 缓存
- macos - dyld:找不到符号:__ZdaPvm - 在 Mac OS X 上运行 KING
- sql - ORACLE中如何去掉换行符
- salesforce - 是否可以通过从另一个系统(例如 Salesforce)读取来填充 IBM Watson Assistant 实体?
- xcode - 如何更改 Xcode 上的配置文件?
- android - 如何使用 Firebase 作业调度程序每周安排任务?
- linux - ftp 为发送的每个文件创建一个日志
- ios - 如何将图像拖放到删除图标上以删除图像?