vue 多个audio播放 一个audio播放其他audio禁止播放

添加链接描述

二:
       <audio
                  controls
                  :src="item.src"
                  class="mt10 audio4"
                  :data-id="`audio3${item.id}`"
                  @play="handlePlay(`audio3${item.id}`)"
                ></audio>

    handlePlay(id) {
      this.videoElement = document.getElementsByTagName('audio')
      // console.log('aaaa', id, this.videoElement)
      Array.from(this.videoElement).forEach(item => {
        // console.log('bbbb', item.dataset.id)
        if (item.dataset.id == id) {
          item.play()
        } else {
          item.pause()
        }
      })
    },
三:
data() {
  return {
    // 创建一个对象数组来存储所有的数据
    items: [
      {
        type: 'audio',
        // 添加一个audio属性来存储对应的音频对象
        audio: new Audio('http://xxx1.mp3')
      },
      {
        type: 'text',
        content: '这是一段文本'
      },
      {
        type: 'audio',
        audio: new Audio('http://xxx2.mp3')
      },
      {
        type: 'image',
        src: 'http://xxx.jpg'
      },
      {
        type: 'audio',
        audio: new Audio('http://xxx3.mp3')
      }
    ],
    // 当前播放的音频对象
    currentAudio: null
  }
},
methods: {
  // 播放或暂停指定的音频
  playOrPause(audio) {
    // 检查是否有其他音频正在播放
    if (this.currentAudio && this.currentAudio !== audio && !this.currentAudio.paused) {
      this.currentAudio.pause();
    }
    // 设置当前播放的音频对象并切换状态
    this.currentAudio = audio;
    if (this.currentAudio.paused) {
      this.currentAudio.play();
    } else {
      this.currentAudio.pause();
    }
  },
  // 音频播放结束事件
  audioEnd(audio) {
    this.currentAudio = null;
  }
}
然后在模板中使用v-if和v-else-if来根据type属性渲染不同的组件:

<div v-for="item in items" :key="item.type">
  <audio-component v-if="item.type === 'audio'" :audio="item.audio" @playOrPause="playOrPause" @audioEnd="audioEnd"></audio-component>
  <p v-else-if="item.type === 'text'">{{ item.content }}</p>
  <img v-else-if="item.type === 'image'" :src="item.src">
</div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值