kikoeru-project / kikoeru-quasar

kikoeru 前端
GNU General Public License v3.0
26 stars 16 forks source link

[BUG] 播放按钮抖动 #16

Open cha0sCat opened 3 years ago

cha0sCat commented 3 years ago

从 #9 引入的问题

设备:移动端 chrome 复现方法:进入音频后,快速多次点击进度条触发 seek

分析: 在部分浏览器上,seek 会触发 onPause 钩子, 缓冲结束后,播放器会强制继续播放(触发 onPlay 钩子)

但是 onPause、onPlay 用来 反映播放器状态 的属性 playing 同时也是 控制播放器播放 的属性

这就导致 playing 内部形成了一个闭环控制

这个问题可以在 华为 P30 Chrome 浏览器上复现。 附一段视频 https://files.catbox.moe/qxnrt7.mp4

解决方案: 分离播放器实际状态 playing 和 用户控制状态 wantPlaying

umonaca commented 3 years ago

类似这种问题写的时候见了很多次,其实Vue自带的Vuex最适合解决这类问题。主要是使用不可变更的变量以及状态变更单向传递。