import { reactive, ref } from 'vue'; import { onHide, onUnload} from "@dcloudio/uni-app" export function useAudio (url) { const innerAudioContext = ref(null); function createAudio() { const innerAudioContext = uni.createInnerAudioContext(); innerAudioContext.autoplay = false; innerAudioContext.src = url; innerAudioContext.onPlay(() => { // 播放 uni.$emit('play-audio'); }); innerAudioContext.onError((res) => { uni.$emit('play-error') }); innerAudioContext.onEnded(() => { // 播放结束 uni.$emit('play-audio-ended') }) return innerAudioContext; } onHide(() => { innerAudioContext.value.stop(); }) onUnload(() => { innerAudioContext.value.stop(); }) // 展开食物停止播放 uni.$on('swiper-change', () => { innerAudioContext.value.stop(); }) innerAudioContext.value = createAudio(); function handlePlay() { innerAudioContext.value.destroy(); innerAudioContext.value = null; innerAudioContext.value = createAudio(); innerAudioContext.value.play() } return { innerAudioContext, handlePlay } }