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

发布于 7 年前作者 mhu15541 次浏览最后编辑 7 年前来自 ask

<!–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 回复
jtan
jtan1 楼6 年前

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

guona
guona2 楼6 年前

好,我试一试。

kangyang
kangyang3 楼6 年前

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

jing96
jing964 楼6 年前

已经解决了。万分感谢!

weisong
weisong5 楼6 年前

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

xia75
xia756 楼6 年前

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

ryan
ryan7 楼6 年前

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

junshen
junshen8 楼6 年前

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

xiayu
xiayu9 楼5 年前

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