Slider({max: this.audioDuration, min: 0, value: this.playDuration})
.blockColor('#8e9ab7')
.trackColor('#d8e8f7')
.selectedColor('#8e9ab7')
.trackThickness(2)
.blockSize({width: 10, height: 10})
.layoutWeight(1)
.onChange((value: number, mode: SliderChangeMode) => {
if (mode == SliderChangeMode.Begin) {
console.log('Begin')
if (this.isPlaying) {
this.avplayer?.pause()
}
} else if (mode == SliderChangeMode.End) {
console.log('End')
if (!this.isPlaying) {
this.avplayer?.play()
}
} else if (mode == SliderChangeMode.Moving) {
console.log('Moving')
this.playDuration = value
this.avplayer?.seek(value)
} else if (mode == SliderChangeMode.Click) {
console.log(`Click ${value}`)
this.playDuration = value
this.avplayer?.seek(value)
}
})
如上面代码所示,在播放音频并且根据播放进度更新slider的value,此时点击slider上的进度条,mode == SliderChangeMode.Click这种情况下获取的value并不是点击位置的value。
Slider组件中的.onChange事件状态并不是if,else的关系。因此应改为