Skip to content

fix: 修复Sprite动画最后一帧有偏差的问题#461

Merged
hughfenghen merged 5 commits into
WebAV-Tech:mainfrom
QAQCup:QAQCup-patch-2
Sep 6, 2025
Merged

fix: 修复Sprite动画最后一帧有偏差的问题#461
hughfenghen merged 5 commits into
WebAV-Tech:mainfrom
QAQCup:QAQCup-patch-2

Conversation

@QAQCup
Copy link
Copy Markdown
Contributor

@QAQCup QAQCup commented Sep 4, 2025

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

@QAQCup
Copy link
Copy Markdown
Contributor Author

QAQCup commented Sep 5, 2025

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

@hughfenghen
Copy link
Copy Markdown
Collaborator

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

@QAQCup
Copy link
Copy Markdown
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
Copy Markdown
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