From 04b6dba74c7051dcc0947b08a4f70b595672e3f2 Mon Sep 17 00:00:00 2001
From: liuyg <376836862@qq.com>
Date: Fri, 07 Jan 2022 11:34:00 +0800
Subject: [PATCH] +文字转语音细节
---
src/components/mobileWindow/index.vue | 19 ++++++++++++-------
src/components/mobilemap/index.vue | 2 +-
src/store/getters.js | 2 +-
src/store/modules/mobile.js | 26 ++++++++++++++++++--------
4 files changed, 32 insertions(+), 17 deletions(-)
diff --git a/src/components/mobileWindow/index.vue b/src/components/mobileWindow/index.vue
index c35f756..34c675b 100644
--- a/src/components/mobileWindow/index.vue
+++ b/src/components/mobileWindow/index.vue
@@ -7,8 +7,8 @@
<div class="mobiletitle">
{{ title }}
<span class="mobile_audio" @click="openAudio" v-show="introduce">
- <i class="el-icon-video-play icon" v-show="!audioData"></i>
- <i class="el-icon-video-pause icon" v-show="audioData"></i>
+ <i class="el-icon-video-play icon" v-show="!audioState"></i>
+ <i class="el-icon-video-pause icon" v-show="audioState"></i>
<!-- <div id="bdtts_div_id">
<audio id="tts_autio_id" autoplay="autoplay">
<source
@@ -92,7 +92,7 @@
"MobileWindowsHide",
"query",
"MobileWindowChangeData",
- "audioData",
+ "audioState",
]),
},
watch: {
@@ -155,6 +155,14 @@
}
if (k == "introduce") {
this.introduce = queryData[k];
+ if (this.introduce) {
+ setTimeout(() => {
+ let Str = document.querySelector(
+ ".mobileBig-center-introduce"
+ ).innerText;
+ this.$store.dispatch("MSET_GETAUDIO", Str); //加入语音
+ }, 20);
+ }
}
}
}
@@ -223,10 +231,7 @@
},
openAudio() {
if (this.introduce) {
- let Str = document.querySelector(
- ".mobileBig-center-introduce"
- ).innerText;
- this.$store.dispatch("MSET_GETAUDIO", Str);
+ this.$store.dispatch("MSET_GETAUDIOBEGIN");
}
},
},
diff --git a/src/components/mobilemap/index.vue b/src/components/mobilemap/index.vue
index 8193e95..9ee026e 100644
--- a/src/components/mobilemap/index.vue
+++ b/src/components/mobilemap/index.vue
@@ -325,7 +325,7 @@
const tileset = new that.DC.Tileset("/mx/tileset.json", {
luminanceAtZenith: 0.5,
});
- tilesetLayer.addOverlay(tileset);
+ // tilesetLayer.addOverlay(tileset);
// tilesetLayer.show = false;
let silhouetteBlue =
diff --git a/src/store/getters.js b/src/store/getters.js
index d20671d..a7bfdf5 100644
--- a/src/store/getters.js
+++ b/src/store/getters.js
@@ -20,7 +20,7 @@
dimension: (state) => state.mobile.dimension, // 维度
dimensionData: (state) => state.mobile.dimensionData, // 维度镜头数据
perspectiveControl: (state) => state.mobile.perspectiveControl, ///视角控制:高度、角度 ()=>{}
- audioData: (state) => state.mobile.audioData, //文字转语音状态
+ audioState: (state) => state.mobile.audioState, //文字转语音状态
};
const navigation = {
diff --git a/src/store/modules/mobile.js b/src/store/modules/mobile.js
index 341e11c..db87ade 100644
--- a/src/store/modules/mobile.js
+++ b/src/store/modules/mobile.js
@@ -47,6 +47,7 @@
tilesetLayer: null, //瀑布流
audioData: null, //语音
+ audioState: false, //语音状态
},
mutations: {
MSET_VIEWER(state, viewer) {
@@ -298,13 +299,12 @@
// })
commit("MSET_POPUPDOM", popupsDom);
},
- closeMobileWindowsDom({ state, commit }) {
+ closeMobileWindowsDom({ state, commit, dispatch }) {
if (!state.MobileWindowsHide && state.popupsDom) {
state.popupsDom.closeOur();
commit("MSET_MOBILEWINDOWSHIDE", true);
if (state.audioData) {
- state.audioData = null;
- window.speechSynthesis.cancel();
+ dispatch("MSET_GETAUDIOBEGIN", "notOpen");
}
} //cancel
},
@@ -490,13 +490,23 @@
});
},
MSET_GETAUDIO({ state, commit, dispatch }, val) {
- if (state.audioData) {
- state.audioData = null;
+ state.audioData = new window.SpeechSynthesisUtterance();
+ state.audioData.text = val;
+ state.audioData.onstart = function (e) {
+ state.audioState = true;
+ };
+ state.audioData.onend = function (event) {
+ state.audioState = false;
+ };
+ },
+ MSET_GETAUDIOBEGIN({ state, commit, dispatch }, val) {
+ if (state.audioState) {
window.speechSynthesis.cancel();
+ state.audioState = false;
} else {
- state.audioData = new window.SpeechSynthesisUtterance();
- state.audioData.text = val;
- window.speechSynthesis.speak(state.audioData);
+ if (val != "notOpen") {
+ window.speechSynthesis.speak(state.audioData);
+ }
}
},
},
--
Gitblit v1.9.3