收藏
回答

wx.createInnerAudioContext().stop() 无法停止音乐播放的解决办法?

    代码如下:

  tap_audio_play() {
    let that = this;
    let audio = that.data.audio;
    let show_audio = that.data.show_audio;
    if (show_audio == true) {
      const innerAudioContext = wx.createInnerAudioContext({
        useWebAudioImplementfalse // 是否使用 WebAudio 作为底层音频驱动,默认关闭。对于短音频、播放频繁的音频建议开启此选项,开启后将获得更优的性能表现。由于开启此选项后也会带来一定的内存增长,因此对于长音频建议关闭此选项
      });
      innerAudioContext.src = audio.fileID;      
      innerAudioContext.play() // 播放
      that.setData({
        show_audio:false
      })
    } else if (show_audio == false) {
      const innerAudioContext = wx.createInnerAudioContext({
        useWebAudioImplementfalse 
      });
      innerAudioContext.src = audio.fileID;      
      innerAudioContext.stop() // 停止
      innerAudioContext.destroy() // 释放音频资源
      that.setData({
        show_audio:true
      })
    };
  }, 

使用.stop()无法停止 音频的播放,即使加了.destroy()也不会停止播放,而且每点击一次,音频就会增加一次播放,几个音频叠加播放,声音很混乱,也无法停止!

使用两个函数,一个播放音乐,一个停止音乐也不行!

开发者工具和真机都无法停止音乐播放!

请帮忙解决!

微信开发者工具:Stable 1.06.2401020, 调试基础库3.3.4,


回答关注问题邀请回答
收藏

2 个回答

  • 0
    0
    02-26
    不要重复创建wx.createInnerAudioContext    创建好之后存储到data中,stop也要用data中的那个innerAudioContext 才能停止
    


    02-26
    有用 1
    回复 1
    • 曹钰辉
      曹钰辉
      发表于移动端
      02-26
      请问data是指什么 ? 麻烦指导一下这个代码! 非常感谢!
      02-26
      回复
  • 曹钰辉
    曹钰辉
    02-27

    按照您的指导把问题解决了,非常感谢!

       onLoad(options) {
        let that = this;
        let audio = wx.getStorageSync('audio');
        let mark = wx.getStorageSync('mark');
        that.setData({
          audio,
          mark,
        });
        let innerAudioContext = wx.createInnerAudioContext({
          useWebAudioImplement: false 
        });
        if (mark == "audio") {
          innerAudioContext.src = audio.fileID;
        } else if (mark == "video") {
          innerAudioContext.src = video.fileID;
        };
        that.setData({
          innerAudioContext,
        });
      },
    
    
      tap_audio_play() {
        let that = this;
        let show_audio = that.data.show_audio;
        let innerAudioContext = that.data.innerAudioContext;
        if (show_audio == true) {
          innerAudioContext.play() // 播放
          that.setData({
            show_audio:false,
          })
        } else if (show_audio == false) {
          innerAudioContext.stop() // 停止
          that.setData({
            show_audio:true,
          })
        };
      },
    
    02-27
    有用
    回复 1
    • 0
      0
      02-27
      ok
      02-27
      回复
登录 后发表内容