惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
博客园 - 司徒正美
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
T
Tailwind CSS Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
M
MIT News - Artificial intelligence
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
Engineering at Meta
Engineering at Meta
Martin Fowler
Martin Fowler
H
Help Net Security
B
Blog
Y
Y Combinator Blog
小众软件
小众软件
S
SegmentFault 最新的问题
I
InfoQ
爱范儿
爱范儿
Hugging Face - Blog
Hugging Face - Blog
D
Docker
博客园 - 【当耐特】
J
Java Code Geeks
阮一峰的网络日志
阮一峰的网络日志

博客园 - KidYang

微信、支付宝个人收款码不能用于经营收款 - z 微信平台开发 微信小程序图表控件 微信小程序网络排查指引 小程序字体转换 - 转 小程序隐藏scroll-view滚动条的实现 - 转 微信小程序scroll-view左右横向滑动 用vscode开发微信小程序,建议安装的插件 微信小程序wxs格式化日期 在 ios 端显示NaN问题及日期格式化工具 小程序涉及npm、vue的一些基础资料 visual studio 关于 Updates were rejected because the remote contains work that you do 小程序使用字体相关 大量Timer_MinBytesPerSecond,Timer_ConnectionIdle错误 - 转 微信小程序隐藏时动画效果 - 转载 System.Security.Cryptography.RSA.FromXmlString 系统找不到指定的文件和X509读取证书文件系统找不到指定的文件异常 - 转载 sqlserver 发送http请求 chrome浏览器直接打印 - z 解决webapi首次启动速度慢的问题 - z 使用第三方库(Senparc)完成小程序支付 - z
小程序播放语音之wx.createInnerAudioContext() - 转
KidYang · 2020-05-14 · via 博客园 - KidYang

我刚开始用wx.createInnerAudioContext(),是将此方法写在了我的播放语音函数里,发现怎么暂停和取消都不好使

经过踩坑,得出结论!!!

1.将此方法声明在onLoad中,(如果声明在page外部,每次进此页面执行语言操作都会多次执行。)

  

2.将api方法也都声明在onLoad中(不需要一直去创建回调事件)

 

 3.播放语言操作

 /**
   * 播放音频
   */
  playAudio(e) {
    const _this = this;
    wx.stopVoice()
    showToast('text', '播放中', {
      duration: 120 * 1000,
      mask: true
    })
    let audio = e.currentTarget.dataset.audio;
    let audioSave = _this.data.audioSave;
    console.log('audio:',audio.name,'  audioSave:',audioSave)
    if (audio.ext === 'mp3') { // 小程序发送的
      this.data.audioContext.src = audio.url
    } else {
      this.data.audioContext.src = audio.mp3Url
    }
    if (audio.name == audioSave) {
      console.log('播放同一个语音,将其暂停')
      this.data.audioContext.pause();
      //初始化
      this.setData({
        audioSave: ''
      })
    } else{
      //不是同一个语音 直接播放其它,将此次语音记录
      this.data.audioContext.play()
      this.setData({
        audioSave: audio.name
      })
    }
  },