音频的onPlay和onStop,重复执行,执行的函数次数累加
发布于 6 年前 作者 mhu 15410 次浏览 来自 问答

<!–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(‘播放停止’)

})

},

})

9 回复

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

好,我试一试。

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

已经解决了。万分感谢!

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

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

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

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

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

回到顶部