微信小程序innerAudioContext不播放问题

4,156 阅读1分钟

问题

最近在做项目的时候,出现了一个问题,innerAudioContext这个东西,第一次加载播放的时候,是没有什么问题的,问题就出在退出该页面,再次点击播放另一个音频,进入播放页面只有,就没声音了,也没报错,信息也能打印出来,就是不播放。

audioLoad: function(audio) {
    innerAudioContext.autoplay = true
    if (audio == '') {
      innerAudioContext.src = "https://naturling-media.oss-cn-hangzhou.aliyuncs.com/interactivebook/resource/kong.m4a"
    } else {
      innerAudioContext.src = audio
    }
    console.log("音频:",audio)
    innerAudioContext.play()
  },

页面隐藏和销毁的时候,对实例进行销毁

onHide: function() {
    innerAudioContext.destroy()
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {
    innerAudioContext.destroy()
  }

初次判定

innerAudioContext.destroy()这个东西,我把这个东西改成innerAudioContext.stop()就ok了,在页面卸载的时候

解决

好吧,这个坑货,Page({})这个实例外面的东西,只是在页面初始化的时候执行一次,下一次类似自动缓存的样子,如果你在页面卸载的时候并把音频播放实例给销毁掉,那就是造成下次进来的时候并不会再次初始化实例,至少我测试的时候是这种结果,仅供参考-。-

const app = getApp() //获取应用实例
const common = require('../../utils/util.js')
const innerAudioContext = wx.createInnerAudioContext()
console.log(666)
Page({
...

或者在onLoad时候再次初始化

onLoad:function(){
   this.innerAudioContext = wx.createInnerAudioContext() 
}