如何循环遍历JavaScript音频文件数组?

4

我有一个小问题,关于在 for 循环中使用包含音频源(链接)的数组。

这是我的代码:

    var audio = new Audio();
    var playlist = new Array('sounds/song0.m4a', 'sounds/song1.m4a', 'sounds/song2.m4a');

        for (var i = 0; i <= playlist.length; i++){
    audio.src = (playlist[i]);
    audio.volume = 0.3;
    audio.loop = false;
    if (audio.ended = true)
        i++;

    if (i = 2) {
        i = 0;
    }

我的控制台在 audio.src = (playlist[i]); 处报错。 有人知道如何解决吗?

1个回答

11

您需要使用ended事件。

var audio = new Audio(),
    i = 0;
var playlist = new Array('http://www.w3schools.com/htmL/horse.mp3', 'http://demos.w3avenue.com/html5-unleashed-tips-tricks-and-techniques/demo-audio.mp3');

audio.addEventListener('ended', function () {
    i = ++i < playlist.length ? i : 0;
    console.log(i)
    audio.src = playlist[i];
    audio.play();
}, true);
audio.volume = 0.3;
audio.loop = false;
audio.src = playlist[0];
audio.play();

我应该如何在我的代码中实现这个功能? 如果我想播放歌曲并循环播放1-结束,下一首歌:2,结束,下一首歌:3,结束:循环重新开始到1。
  • 编辑:我想我已经成功了,谢谢!
- Kryptonous
好像播放是有效的,但当歌曲结束时,它不会跳到下一首。我该如何实现这个功能? - Kryptonous
非常感谢!这对我帮助很大。 - Kryptonous
@ArunPJohny,如何做到完全相同的事情,但在前一个结束后延迟播放下一首歌曲?我正在制作类似于Incredibox(http://www.incredibox.com/)的游戏,我需要像那里一样有音乐节拍。我正在使用拖放来播放声音。 - Ionut Necula

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接