12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 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
- }
- }
|