2016-09-05 43 views
7

Kullanıcının sadece görüntüyü oynatmak veya oynatmayı durdurmak için tıklayabileceği bir ses arka plan oynatıcı oluşturmak istiyorum. Bir oynatma listesi oluşturmak için mevcut kodları oluştururken veya yeniden yazarken, bir önceki şarkı bittiğinde otomatik olarak bir sonraki şarkıyı çalmakta güçlük çekiyorum. Bunu vanilya jsinde yapmak istiyorum.
https://jsfiddle.net/rockarou/ad8Lkkrj/ses otomatik çalma önceki şarkı bittiğinde sonraki şarkı

burada
var imageTracker = 'playImage'; 

swapImage = function() { 
    var image = document.getElementById('swapImage'); 
    if (imageTracker == 'playImage') { 
    image.src = 'http://findicons.com/files/icons/129/soft_scraps/256/button_pause_01.png'; 
    imageTracker = 'stopImage'; 
    } else { 
    image.src = 'http://findicons.com/files/icons/129/soft_scraps/256/button_play_01.png'; 
    imageTracker = 'playImage'; 
    } 
}; 

var musicTracker = 'noMusic'; 

audioStatus = function() { 
    var music = document.getElementById('natureSounds'); 
    if (musicTracker == 'noMusic') { 
    music.play(); 
    musicTracker = 'playMusic'; 
    } else { 
    music.pause(); 
    musicTracker = 'noMusic'; 
    } 
}; 

cevap

1

sonraki şarkıyı tetiklemek için bir hiledir: İşte
Ben bugüne kadar ne olduğunu

music.pause(); 
music.src = "new url"; 
music.load(); 
music.play(); 
: Aynı ses etiketi üzerinde başka bir şarkı nasıl oynanır

music.addEventListener('ended',function(){ 
     //play next song 
    }); 

Şimdi html5'deki bir oynatma listesinin harika bir örneğidir, her şarkıyı o anda yükleyebilirsiniz, bazı istemcilerde

//playing flag 
var musicTracker = 'noMusic'; 
//playlist audios 
var audios = []; 
$(".song").each(function(){ 
     var load = new Audio($(this).attr("url")); 
    load.load(); 
    load.addEventListener('ended',function(){ 
     forward(); 
    }); 
    audios.push(load); 
}); 
//active track 
var activeTrack = 0; 

vurgulama cadı şarkı: s (mobil) trafik tüketmek zaman mutlu olmayacak, bir sonraki örnekte tüm müzikler şarkı şarkı için yumuşak bir geçiş olması için aynı anda yüklenir, şarkıları yüklenirken evet ben tembel, tembel jquery, evet, davanın biraz oynarken:

var showPlaying = function() 
{ 
    var src = audios[activeTrack].src; 
    $(".song").removeClass("playing"); 
    $("div[url='" + src + "']").addClass("playing"); 
}; 

Fiddle here

Not: ses en oynamak değilse ses url en ulaşılabilir olması halinde, el ile kontrol