var iac = wx.createInnerAudioContext();
iac.src = "xxxxxx1";
setTimeout(function(){
iac.play();
},0);
//iac.src = "xxxxxx2";
setTimeout(function(){
iac.play();
},500);
目标:制作一个简谱播放小程序(TXT音乐播放器,已上线),多次输入同一个数字要叠加播放音乐,例如输入"1 1 1",要叠加播放1声音三次,每次间隔0.5秒。
我想实现音乐叠加播放的效果(src有可能改变,也有可能不改变),代码如上,但是当前音乐没有播放完毕时,再次调用play方法并不会叠加播放音乐,也就是没有反应;即使中途改变src,再次调用play也没有反应;
目前我只能通过创建多个对象的方式来叠加播放音乐,但是效果不太好,只能凑付使用;
var iac1 = wx.createInnerAudioContext();var iac2 = wx.createInnerAudioContext();var iac3 = wx.createInnerAudioContext();
......
而且目前手机端打开小程序可以凑付使用了,但是PC端打开小程序,声音还是无法叠加播放(例如输入"1 1 1 ",只播放一次声音,没有三次叠加),也就是连手机端使用创建多个对象进行叠加播放声音的方式也失效了;
这样导致音符间隔短、节奏快的音乐无法正常播放,请问有什么解决办法呢?
之前看到这篇文章,说明有叠加播放的功能,但是AudioContext.play()方法似乎已不推荐使用,我使用后发现无法播放声音,不知道是什么原因:
https://developers.weixin.qq.com/community/develop/doc/00008c2f1b0080fadff96045a56c00
可以给InnerAudioContext一个设置参数吗?设置成允许叠加播放或不允许叠加播放之类的?当然我准备设置成允许叠加播放的模式。
我参考这个方法修改了代码逻辑:
button_Press:function(){ const audio_1 = wx.createInnerAudioContext(); audio_1.src = "abc.mp3"; audio_1.play(); }
将自己的代码逻辑改为下方的形式,创建多个const类型的iac,勉强实现了效果,虽然还有些卡顿,但电脑端微信小程序基本可以使用了。
setTimeout(function(){ const iac = wx.createInnerAudioContext(); iac.src = "xxxxxx1"; iac.play(); },0);