2017-10-18 3 views
0

J'ai ce code qui randomise et jouer une chanson à partir d'une liste:chanson aléatoire quand il se termine - javascript html5

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/dreams.mp3", 
     "sounds/oizo.mp3", ]; 

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

    if (audie.paused == false) { 
     audie.pause(); 
    } else { 
     audie.src = srcAudio; 
     audie.play(); 
    } 
} 

Lorsque la chanson cesse de jouer, il redémarre avec e même. Comment puis-je le faire quand la musique se termine, il va attraper une nouvelle chanson de ma liste et la jouer automatiquement?

Répondre

1

Le problème est que vous appelez simplement this.play() dans votre écouteur d'événement ended. , Vous devriez plutôt être mise à jour à l'attribut src avec le choix aléatoire de la chanson avec this.src = srcAudio, semblable à la façon dont vous êtes pour la sélection initiale:

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

    if (audie.paused == false) { 
     audie.pause(); 
    } else { 
     audie.src = srcAudio; 
     audie.play(); 
    } 
} 

Hope this helps! :)

+0

Quel est le but de régler '.src' à' audie.src = srcAudio' dans l'instruction 'else'? – guest271314

+0

Bonne question, mais il était là dans le code original, donc je suppose que c'est le comportement prévu. –

+0

Est-ce que 'srcAudio' dans le gestionnaire' ended' est le même 'srcAudio' que l'instruction' else'? – guest271314