收藏
回答

音频的onPlay和onStop,重复执行,执行的函数次数累加

问题模块 框架类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
API和组件 小程序 wx.createInnerAudioContext() 客户端 Android 6.6.5 1.9.91

<!--pages/bofang/bofang.wxml-->

<button bindtap='bofang'>播放录音</button>


// pages/bofang/bofang.js

const innerAudioContext = wx.createInnerAudioContext();

Page({

bofang: function () {

innerAudioContext.src = "https://oss.medkr.com/files/1520504115434.m4a";

innerAudioContext.play();

innerAudioContext.onPlay((res) => {

console.log('开始播放')

})


innerAudioContext.onEnded((res) => {

console.log('播放完了')

})


innerAudioContext.onStop((res) => {

console.log('播放停止')

})

},

})



最后一次编辑于  2018-03-12  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

9 个回答

  • 小程序技术专员-拉风
    小程序技术专员-拉风
    2018-03-12

    这是一个on的监听,你每触发一次bofang 都会往对应的on监听新增一个回调处理,和浏览器的  addEvent(‘click’, function(){})一样,你add多次,那就会触发每一个回调,很合理。

    2018-03-12
    赞同
    回复
  • 小程序技术专员-拉风
    小程序技术专员-拉风
    2018-03-12

    你是不是一直点击按钮触发 bofang 方法

    2018-03-12
    赞同
    回复
  • 明琛
    明琛
    2018-03-22

    在函数内部加上判断条件,来判断是否执行这个函数。

    2018-03-22
    赞同
    回复
  • 沙隆巴斯
    沙隆巴斯
    2018-03-22

    同样的问题,是怎么解决的呢?

    2018-03-22
    赞同
    回复
  • 明琛
    明琛
    2018-03-13

    已经解决了。万分感谢!

    2018-03-13
    赞同
    回复
  • 明琛
    明琛
    2018-03-13

    好,我试一试。

    2018-03-13
    赞同
    回复
  • 明琛
    明琛
    2018-03-12

    如果我使用的是addEvent,那出现这个现象的确很合理。但是我用的并不是addEvent啊!你觉得一个音频文件,的onPlay,onEnded和onStop事件只能正常执行一次是合理的吗?还是说你们做的这个东西就是一次性使用的,不能重复使用?您官方API可没有这么说吧。按您这么说,我每次想要执行,都要销毁全局音频文件,在重新创建一个新的全局音频?您觉得这个操作很合理吗?

    2018-03-12
    赞同
    回复
  • 明琛
    明琛
    2018-03-12

    同时,因为我要做语音播放的动画,连续多次点击,也是要做测试的。主要是现在卡在这个事件上了。我的动画显示的是,上次执行的函数并没有消除,而是一起执行的。也就是说,当我再次点击时,会把我上次点击执行的函数加上这次执行的函数一起执行一遍,所以会出现累加。

    2018-03-12
    赞同
    回复
  • 明琛
    明琛
    2018-03-12

    不是,每次就点击一下,而且就算很普通的点击,时间间隔2,3吧。而且下面的图片,也显示了我的点击事件。

    2018-03-12
    赞同
    回复