不递归随机播放音轨
Play audio tracks randomly without recursion
我在页面上有多个音频元素,这些元素是根据用户使用复选框的选择 javascript 创建的。当用户单击“播放”按钮时,我想播放随机选择的音轨,曲目之间的延迟可由用户调整,直到他们单击“停止”按钮。我有这个代码
function loopmusic(){
if (!looping){
alert('exiting loopmusic()');
return 0;
}
var audioElements = document.getElementsByTagName('audio');
var index = Math.floor(Math.random() * audioElements.length);
//audioElements[index].volume=0.5;
$(audioElements[index]).bind("ended", function(){
audioElements[index].pause()
loopmusic()
});
setTimeout(audioElements[index].play(), delayms);
}
该代码改编自我在这里阅读的内容:
现在事件侦听器似乎没有按我预期的方式运行,曲目之间没有延迟,并且同时播放多个曲目。我想要任何关于如何解决这个问题的指示,如果我可以在没有递归的情况下做到这一点,那将是更可取的。这可能会 运行 一段时间,我想避免它占用大量内存。
Right now the event listener doesn't appear to be acting the way I
expected, there is no delay between tracks, and multiple tracks play
at the same time.
您正在调用 .play()
而不是引用 .play
;尝试在 setTimeout
调用中删除 .play()
之后的 ()
。此外,似乎没有必要在 ended
事件中调用 .pause()
。不确定 delayms
在哪里定义?
setTimeout(audioElements[index].play, delayms);
我在页面上有多个音频元素,这些元素是根据用户使用复选框的选择 javascript 创建的。当用户单击“播放”按钮时,我想播放随机选择的音轨,曲目之间的延迟可由用户调整,直到他们单击“停止”按钮。我有这个代码
function loopmusic(){
if (!looping){
alert('exiting loopmusic()');
return 0;
}
var audioElements = document.getElementsByTagName('audio');
var index = Math.floor(Math.random() * audioElements.length);
//audioElements[index].volume=0.5;
$(audioElements[index]).bind("ended", function(){
audioElements[index].pause()
loopmusic()
});
setTimeout(audioElements[index].play(), delayms);
}
该代码改编自我在这里阅读的内容:
现在事件侦听器似乎没有按我预期的方式运行,曲目之间没有延迟,并且同时播放多个曲目。我想要任何关于如何解决这个问题的指示,如果我可以在没有递归的情况下做到这一点,那将是更可取的。这可能会 运行 一段时间,我想避免它占用大量内存。
Right now the event listener doesn't appear to be acting the way I expected, there is no delay between tracks, and multiple tracks play at the same time.
您正在调用 .play()
而不是引用 .play
;尝试在 setTimeout
调用中删除 .play()
之后的 ()
。此外,似乎没有必要在 ended
事件中调用 .pause()
。不确定 delayms
在哪里定义?
setTimeout(audioElements[index].play, delayms);