我使用一个PagView 播放不同的pagfile 有什么好的方案 #3243
-
|
我使用一个PagView 播放不同的pagfile 有什么好的方案,在播放中可能会切换到另一个,或者这个播放完后播放另一个,当始终都只会播放一个 |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 8 replies
-
|
解决方案 做法
为什么这样做 将多个文件预先添加到同一个容器中,首次渲染时所有文件的资源就已经完成初始化和缓存构建。后续切换只是修改 visible 属性,不涉及任何重新加载或缓存重建,切换几乎是瞬时的。 这是典型的空间换时间策略,适合文件数量有限且对切换流畅度要求高的场景。 时长不一致的处理 切换文件时需要做以下处理:
这样每次切换后,播放器都按当前文件的实际时长进行播放,避免时长差异带来的问题。 |
Beta Was this translation helpful? Give feedback.
-
|
时长不一致的处理 切换文件时需要做以下处理: 先暂停播放 你提到的这个,在小程序上面动画与动画之间有闪缩。如何解决 |
Beta Was this translation helpful? Give feedback.
解决方案
使用 预加载容器 + setVisible 控制 的方式实现多文件切换。
做法
为什么这样做
直接调用 setComposition 切换文件时,每次都需要重新初始化渲染环境、构建图形缓存、上传 GPU 纹理,这些操作相对耗时,在频繁切换场景下会造成明显卡顿。
将多个文件预先添加到同一个容器中,首次渲染时所有文件的资源就已经完成初始化和缓存构建。后续切换只是修改 visible 属性,不涉及任何重新加载或缓存重建,切换几乎是瞬时的。
这是典型的空间换时间策略,适合文件数量有限且对切换流畅度要求高的场景。
时长不一致的处理
当容器中多个 PAGFile 时长不同时,容器的 duration 会自动取所有子图层的最大时长。这会导致一个问题:播放进度是按容器 duration 计算的,如果当前显示的文件时长较短,动画播完后会有一段空白等待时间。
切换文件时需要做以下处理:
这样每次切换后,播放器都按当前文件的实际时长进行播放,避免时长差异带来的问题。