使用微信小程序 写音乐播放器,遇到 关于 slider 组件抖动的问题
问题是这样的:如果滑动或者点击 进度条,进度条会出现抖动,这是可能是因为在onTimeUpdate()中计算 并且设置了当前时间,导致出现的抖动。
解决思路:
1.解决拖动时产生的抖动
在 进度条的滑动开始事件 bindchanging 设置一个变量 比如 move = true,然后在 ‘设置进度条的位置’ 这个代码块里面的上方加个判断 如果 move == true 就直接返回,不进行设置进度条的位置,然后在 进度条的滑动结束事件bindchange 中将 move = false 就行
2.解决点击或者拖动后,进度条抖动
slider有两个事件:拖动中有个changing事件,单击或者结束拖动时change事件
大概思路就是 :给changing事件清除 定时器,change事件 再 设置定时器。
这个案例中需要获取进度更新歌词,所以写两个监听函数,一个更新滑动条,一个更新歌词和歌词的时间,changing清掉 更新滑动的 定时器,change 设置新的定时器。
更新歌词和歌词时间的定时器不用管,让他自己更新着。如果要暂定歌曲,肯定也要暂停定时器,这时就要你自己写一些关于歌曲是不是在播放的判断在定时器里面。
data: {
timerInterSlider: '',
timerInter: '',
},
onLoad: function (options) {
this.setData({
timerInter: setInterval(() => {
this.changeSlider2()
}, 500),
timerInterSlider: setInterval(() => {
this.changeSlider()
}, 500),
})
},
// 清除定时器语句 clearInterval(this.data.timerInterSlider)
// 记得在页面销毁时,清除定时器
截屏2021-11-29 下午2.57.37.png
截屏2021-11-29 下午3.16.24.png
网友评论