用wx.createInnerAudioContext连续播放音效无法完整体现效果?
发布于 7 年前 作者 yefang 15162 次浏览 来自 官方Issues

初学者,在做一个模拟发报的小程序练手,输入电码字符串,比如.- -…;现在需要遍历这个字串,如果是.播放嘀的音效,如果是-播放嗒的音效,两个是本地mp3文件。代码很简单。音效也能放出来,但是耳朵听到的效果是不完整的。.- -…这个字串要耳朵最终听到“嘀嗒空嗒嘀嘀嘀”这样的效果,但程序实际听到的是“嘀嗒”的效果。感觉就是for循环和play函数是异步的,循环走的很快,但play函数来不及进行中断。无法保证音效的完整性。不知有什么方法可以保证发出的音是理想的效果。wxml中就是绑定一个按钮事件,就不列代码了。js页面中音效的处理代码如下:

var strCodeResule= '.- -...'
var i = 0//循环变量,来循环整个字符串
const DaAudio = wx.createInnerAudioContext()//嗒的音效
const DiAudio = wx.createInnerAudioContext()//嘀的音效
DaAudio.autoplay = false
DaAudio.src = '/pages/src/基准电报长音.mp3'
DiAudio.autoplay = false
DiAudio.src = "/pages/src/基准电报短音.mp3"
//循环访问电码串每个字符
iLenth = strCodeResule.length//获取电码串长度
for (i = 0; i < iLenth; i++) {
  //如果是.,要发短音
  if ('.' == strCodeResule[i]) {
    //发短音
    DiAudio.play()
  } else if ('-' == strCodeResule[i]) {
    //发长音
    DaAudio.play()
  } else {
    //其它字符不发音
  }
}
回到顶部