小程序笔记-关于wx.createInnerAudioContext() /InnerAudioContext的使用与踩坑

使用

用方法封装,也可以不封装

/**
   * 操控音频播放
   * @params: Audios: 音频地址列表
   * */ 
  handleAudio(Audios){
    
    AppMusic.destroy()  //销毁上次的实例(必须有)AppMusic是全局实例
    AppMusic = wx.createInnerAudioContext() //创建实例(记住一定放这里,因为每次新播放音频都要新建实例,否则会播放上次和本次的音频)
    AppMusic.src = Audios[0]  // 播放地址
    AppMusic.autoplay = true  // 自动播放,默认位false
    AppMusic.onPlay(() => {   // 监听播放开始
      console.log('开始播放')
    })
    AppMusic.onError((res) => { //监听播放报错
      console.log(res.errMsg)
      console.log(res.errCode)
      // AppMusic.destroy()
    })
    AppMusic.onPause( () =>{  //监听播放暂停
      console.log('暂停播放')
     }
    )
    let jishu = Audios.length  //获取地址列表长度,方便下面的循环播放
    let soundsIndex = 0 //音频索引
    let offEnded = AppMusic.onEnded( (res) =>{  //使用类似递归的方法循环,播放上一首结束,继续下一首
      console.log(AppMusic.src)
      jishu --
      if(jishu > 0){
        soundsIndex ++
        AppMusic.src = Audios[soundsIndex]     
      }
    })
  },

踩坑:

如果在调用方法前不使用AppMusic.destroy()  就会出现同一个音频多次被监测和播放:


版权声明:本文为A88552211原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。