Skip to content

Conversation

@QAQCup
Copy link
Contributor

@QAQCup QAQCup commented Sep 4, 2025

判断当前时间大于动画时间,则统一渲染为动画最后一帧的效果,以避免最后一帧的偏差 #460

@QAQCup
Copy link
Contributor Author

QAQCup commented Sep 5, 2025

补充一点,这样修改后,还可以统一画布从头播放、跳过动画直接从中间播放,两种播放方式之间的动画差异。
比如,动画设置0%的时候opacity:1,100%的时候opacity:0,从头播放,最后元素是隐藏的,跳过动画直接从中间开始播放,最后元素是显示的。改为渲染动画最后一帧就不会有这个问题了。

@hughfenghen
Copy link
Collaborator

我对代码稍作调整,试试应该也能解决问题了吧?

@QAQCup
Copy link
Contributor Author

QAQCup commented Sep 5, 2025

有点小问题,如果 iterCount 设置的不是整数,比如设置成1.5,最后process强制为1就不行了,虽然好像一般没人这么干……

另外还有个新发现的问题,如果动画结束后,元素值和最开始不一样了,比如 0% opacity:1,100% opacity:0,这时跳回开始时间,元素opacity值不会变回1。那是不是把前面时间也强制改成 process=0 那帧?或者备份一下元素属性值,但看代码感觉备份属性值好麻烦

@hughfenghen
Copy link
Collaborator

先这样吧,碰到实际场景再解决; 这个解决方法在 Pro 版运行较长时间了(改动很小,我忘记合入开源版了。。。

另外目前的动画方案其实有一些限制,参考: #389 (comment)
暂时不考虑往回跳的问题。

@hughfenghen hughfenghen merged commit 3da5c7d into WebAV-Tech:main Sep 6, 2025
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants