learnContent.vue 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <template>
  2. <view>
  3. <!-- 单词区 -->
  4. <selectWordsVue :active-words="activeWords" :activeWord="activeWord"></selectWordsVue>
  5. <selectTypesVue activeSelect="1"></selectTypesVue>
  6. <view>{{activeWord.name}}</view>
  7. <view>{{activeWord.yinbiao}}</view>
  8. <view @click="playMainAudio">{{activeWord.yinpin}}</view>
  9. <view>{{activeWord.jianyi}}</view>
  10. <view>详解 ></view>
  11. <view v-for="(item,index) in activeWord.yinjie" :key="index">
  12. <view>{{item.cigen}}</view>
  13. <view>{{item.yinbiao}}</view>
  14. <view >{{item.yinpin}}</view>
  15. </view>
  16. <view>自然拼读</view>
  17. <view>音节拆分</view>
  18. <view v-if="tabFlag ==1">
  19. <view>词根助记</view>
  20. <view>
  21. {{activeWord.cigen}}
  22. </view>
  23. </view>
  24. <view @click="clearFun">
  25. asdfasdfasfasdfdasdfasdfasfadsfasdfadsfasdfasd
  26. </view>
  27. </view>
  28. </template>
  29. <script setup>
  30. import selectWordsVue from './selectWords.vue';
  31. import selectTypesVue from './selectTypes.vue';
  32. import audioManager from './audioManager'
  33. import { reactive,ref,onMounted } from 'vue';
  34. const props = defineProps({
  35. activeWord: {
  36. type: Object,
  37. },
  38. activeWords: {
  39. type: Array
  40. },
  41. })
  42. let tabFlag = ref(1)
  43. // setTimeout(() => {
  44. // console.log('activeWord',props.activeWord)
  45. // })
  46. const audioInfo = ref(null)
  47. // 初始化并缓存音频
  48. const initAudio = async () => {
  49. // 1. 从缓存获取已有信息
  50. const cachedInfo = audioManager.getAudioInfoFromStorage(props.activeWord.id)
  51. if (cachedInfo) {
  52. audioInfo.value = cachedInfo
  53. }
  54. // 2. 预加载所有音频(无论是否已有缓存)
  55. await audioManager.cacheWordAudios(props.activeWord)
  56. // 3. 更新音频信息
  57. audioInfo.value = audioManager.getAudioInfoFromStorage(props.activeWord.id)
  58. }
  59. // 播放主音频
  60. const playMainAudio = () => {
  61. if (audioInfo.value && audioInfo.value.main) {
  62. audioManager.playAudio(audioInfo.value.main)
  63. }
  64. }
  65. // 播放音节音频
  66. const playSyllable = (syllable) => {
  67. audioManager.playAudio(syllable)
  68. }
  69. // 播放频度音频
  70. const playFrequency = (frequency) => {
  71. audioManager.playAudio(frequency)
  72. }
  73. const clearFun = (frequency) => {
  74. audioManager.clearAllCache()
  75. }
  76. onMounted(() => {
  77. initAudio()
  78. })
  79. </script>
  80. <style>
  81. </style>