| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <template></template>
- <script setup>
- import { onReady, onLoad, onUnload, onShow, onNavigationBarButtonTap, onPullDownRefresh, onReachBottom } from "@dcloudio/uni-app";
- import { defineComponent, getCurrentInstance, inject, nextTick, onMounted, watchEffect, ref } from "vue";
- const emit = defineEmits(["onEnded", "onError"]);
- const props = defineProps({
- //播放原地址
- audioUrl: {
- type: String,
- defualt: "",
- },
- //是否开启
- audioBool: {
- type: Boolean,
- defualt: "",
- },
- });
- const isPlay = ref(false);
- const innerAudio = ref(null);
- function handleTTS() {
- if (!audioBool) {
- return;
- }
- if (innerAudio.value) {
- try {
- innerAudio.value.pause();
- innerAudio.value.destroy();
- innerAudio.value = null;
- } catch (e) {
- //TODO handle the exception
- }
- }
- innerAudio.value = uni.createInnerAudioContext();
- innerAudio.value.autoplay = true;
- innerAudio.value.volume = 1;
- innerAudio.value.src = props.audioUrl;
- innerAudio.value.onPlay(() => {
- console.log("开始播放");
- });
- innerAudio.value.onEnded((res) => {
- console.log("音频播放结束");
- isPlay.value = false;
- });
- innerAudio.value.onError((res) => {
- console.log("音频播放出错" + res);
- console.log(res.errCode);
- });
- innerAudio.value.play();
- }
- watchEffect(() => {
- if (props.audioUrl) {
- handleTTS();
- }
- });
- onUnload(() => {
- if (innerAudio.value) {
- innerAudio.value.stop();
- innerAudio.value.destroy();
- }
- });
- </script>
- <style lang="scss" scoped></style>
|