fix : 声音问题处理
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="btns-cont">
|
||||
<view class="play-btn" >
|
||||
<view class="play-btn">
|
||||
<image class="icon" v-show="!(!voiceLoading&&(props.activeVoiceId === dataInfo.id))" @click.stop="playVoice"
|
||||
src="@/static/images/course/play-blue.png" style="width: 100%;height: 100%;"></image>
|
||||
<image class="icon" v-show="!voiceLoading&&(props.activeVoiceId === dataInfo.id)" @click.stop="pauseVoice"
|
||||
@@ -84,6 +84,20 @@
|
||||
onUnload(() => {
|
||||
pauseVoice()
|
||||
})
|
||||
// 重播
|
||||
const restartPlay = () => {
|
||||
if (itemVoice.value) {
|
||||
emit('changePlay', '');
|
||||
emit('changePlay', unref(dataInfo)?.id);
|
||||
setTimeout(() => {
|
||||
talkUserVoiceObj.value.src = itemVoice.value;
|
||||
talkUserVoiceObj.value.seek(0);
|
||||
talkUserVoiceObj.value.play();
|
||||
}, 100);
|
||||
} else {
|
||||
playVoice();
|
||||
}
|
||||
};
|
||||
const pauseVoice = () => {
|
||||
if (!talkUserVoiceObj.value) return
|
||||
talkUserVoiceObj.value.pause()
|
||||
@@ -92,7 +106,13 @@
|
||||
}
|
||||
const playVoice = () => {
|
||||
emit('changePlay', unref(dataInfo)?.id)
|
||||
if(isTesting.value){
|
||||
talkUserVoiceObj.value.volume = 1
|
||||
restartPlay()
|
||||
return
|
||||
}
|
||||
if (talkUserVoiceObj.value && talkUserVoiceObj.value.src) {
|
||||
talkUserVoiceObj.value.volume = 1
|
||||
setTimeout(() => {
|
||||
talkUserVoiceObj.value.src = itemVoice.value
|
||||
talkUserVoiceObj.value.play()
|
||||
@@ -101,6 +121,7 @@
|
||||
return
|
||||
} else {
|
||||
talkUserVoiceObj.value.src = ''
|
||||
talkUserVoiceObj.value.volume = 1
|
||||
if (unref(dataInfo).talkingVoice) {
|
||||
setTimeout(() => {
|
||||
talkUserVoiceObj.value.src = itemVoice.value
|
||||
@@ -140,12 +161,12 @@
|
||||
talkUserVoiceObj.value.sessionCategory = 'soloAmbient'
|
||||
//#ifdef APP-PLUS
|
||||
// 安卓端 须播放一次,不然再次播放会没有声音
|
||||
// if (IsAndEnv) {
|
||||
// isTesting.value = true
|
||||
// talkUserVoiceObj.value.volume = 0
|
||||
// talkUserVoiceObj.value.play()
|
||||
// // talkUserVoiceObj.value.pause()
|
||||
// }
|
||||
if (IsAndEnv) {
|
||||
isTesting.value = true
|
||||
talkUserVoiceObj.value.volume = 0
|
||||
talkUserVoiceObj.value.play()
|
||||
// talkUserVoiceObj.value.pause()
|
||||
}
|
||||
// #endif
|
||||
// setTimeout(() => {
|
||||
// setVoiceTime(0)
|
||||
@@ -153,16 +174,16 @@
|
||||
}
|
||||
const isTesting = ref(false)
|
||||
const setVoiceTime = (sum) => {
|
||||
sum += 1
|
||||
let _sum = sum + 1
|
||||
if (Math.ceil(talkUserVoiceObj.value.duration) > 0) {
|
||||
voiceTime.value = (Math.ceil(talkUserVoiceObj.value.duration) || 1) + 's'
|
||||
} else {
|
||||
if (sum === 20) {
|
||||
voiceTime.value = (props.dataInfo.voiceTime|| 0) + 's'
|
||||
if (_sum === 25) {
|
||||
voiceTime.value = (props.dataInfo.voiceTime|| 1) + 's'
|
||||
return
|
||||
}
|
||||
setTimeout(() => {
|
||||
setVoiceTime(sum)
|
||||
setVoiceTime(_sum)
|
||||
}, 200)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user