首页 > 解决方案 > 音频结束,重新洗牌变量并播放另一个音频

问题描述

我在播放按钮上使用此脚本,单击它会启动随机音频,再次单击音频会停止。

我的问题是,如果我不单击停止歌曲,歌曲将结束并重新开始 - 我想让它在歌曲结束时重新调整变量并获取一首新歌曲,而不是重复第一个。

var sounds = [
    "sounds/royksopp.mp3",
    "sounds/9thwonder.mp3",
    "sounds/thisbeat.mp3",
    "sounds/mosdef.mp3",
    "sounds/bewater.mp3",
    "sounds/boutdre.mp3",
    "sounds/masterflash.mp3",
    "sounds/2ep.mp3",
    "sounds/drewestcoast.mp3",
    "sounds/poetry.mp3",
    "sounds/mfdoom.mp3",
    "sounds/imnot.mp3",
    "sounds/jamba.mp3",
    "sounds/meetyour.mp3",
    "sounds/popyacork.mp3",
    "sounds/dreams.mp3",
    "sounds/unders.mp3",
    "sounds/oizo.mp3", ];

function Start(audioFile) {
    srcAudio = sounds[Math.floor(Math.random()*sounds.length)];
    var audie = document.getElementById("myAudio");
    audie.addEventListener('ended', function() {
        this.currentTime = 0;
        this.play();
        }, false);

    $(audie).animate({volume: 0.9}, 0);
    audie.src = srcAudio;
    audie.play();

}

function Stop(audioFile) {
    var audie = document.getElementById("myAudio");
    $(audie).animate({volume: 0}, 400);
}

我想我必须改变一些东西audie.src = srcAudio;

您可以在此处查看“播放”按钮:https ://www.vtxfactory.org/


代码更新:我添加了:

    var sounds = [
        "sounds/royksopp.mp3",
        "sounds/9thwonder.mp3",
        "sounds/thisbeat.mp3",
        "sounds/mosdef.mp3",
        "sounds/bewater.mp3",
        "sounds/boutdre.mp3",
        "sounds/masterflash.mp3",
        "sounds/2ep.mp3",
        "sounds/drewestcoast.mp3",
        "sounds/poetry.mp3",
        "sounds/mfdoom.mp3",
        "sounds/imnot.mp3",
        "sounds/jamba.mp3",
        "sounds/meetyour.mp3",
        "sounds/popyacork.mp3",
        "sounds/dreams.mp3",
        "sounds/unders.mp3",
        "sounds/oizo.mp3", ];

    function Start(audioFile) {
        srcAudio = sounds[Math.floor(Math.random()*sounds.length)];
        var audie = document.getElementById("myAudio");
        audie.addEventListener('ended', function() {
     this.currentTime = 0;
     if(isPlaying)
     {
        this.src = sounds[Math.floor(Math.random()*sounds.length)];
        this.play();
     }
}, false);

                $(audie).animate({volume: 0.9}, 0);
                audie.src = srcAudio;
                audie.play();

          }

    function Stop(audioFile) {
        var audie = document.getElementById("myAudio");

                $(audie).animate({volume: 0}, 400);

          }

现在音频在结束时停止。难道我做错了什么?

标签: javascripthtml

解决方案


我认为如果您在上一首歌曲结束后设置一个新的 src,您的第一个代码会很好。

function Start(audioFile) {
    srcAudio = sounds[Math.floor(Math.random()*sounds.length)];
    var audie = document.getElementById("myAudio");
    audie.addEventListener('ended', function() {
        this.currentTime = 0;
        this.src = sounds[Math.floor(Math.random()*sounds.length)];
        this.play();
        }, false);

    $(audie).animate({volume: 0.9}, 0);
    audie.src = srcAudio;
    audie.play();

}

推荐阅读