Как воспроизводить песню по одной за раз с помощью SoundCloud API

#javascript #jquery #media-player #soundcloud

#javascript #jquery #медиаплеер #soundcloud

Вопрос:

Я создаю музыкальный проигрыватель с помощью SoundCloud. В нем есть кнопка «Воспроизведение / пауза» и список воспроизведения. По умолчанию кнопка «Воспроизведение / пауза» воспроизводит первую песню из списка воспроизведения. но если воспроизводится песня в списке воспроизведения, это будет текущая песня, и кнопка «Воспроизведение / пауза» работает на основе этого. Моя проблема в том, что когда я выбираю песню, она начинает воспроизводиться, но предыдущая песня не останавливается. если я не нажму кнопку «Воспроизведение / пауза», прежде чем нажимать на другую песню.

Вот код:

 var currentTrack = $("ul li").first().attr('id');
  

Находит идентификатор val выбранного элемента, поэтому этот идентификатор будет кодом песни для воспроизведения.

 $(document).ready(function(){
    $("ul").on('click','li',function(){
        currentTrack = this.id;
        console.log(currentTrack);
        streamTrack(currentTrack);
    });

}); 
  

Если текущая песня уже воспроизводится, нажмите кнопку, чтобы приостановить ее, если не воспроизвести (переключить). В противном случае воспроизводится элемент по умолчанию

 var is_playing = false,
    sound;
function player(){

    if( sound ) {
        if(is_playing) {
            sound.pause();
            is_playing = false;
        } else {
            sound.play();
            is_playing = true;
            console.log(already_played);
        }
    } else {
        currentTrack = $("ul li").first().attr('id');
        console.log(currentTrack);
        streamTrack(currentTrack);
    }
} 
  

Способ воспроизведения песни.

 var is_playing = true;
function streamTrack(myTrack){
    SC.stream("/tracks/"   myTrack, function(obj){
            //obj.stopAll();

            obj.play();
            sound = obj;
            is_playing = true;
    });
}
  

Вот онлайн-демонстрация: http://jsfiddle.net/danials/wZZ4D/10 /

Есть идеи, как остановить воспроизведение всех песен и воспроизвести ту, на которую нажата кнопка?

Ответ №1:

вам не нужно создавать для нее целую функцию, просто сделайте sound глобальный и приостановите звук или остановите его звук не равен нулю.

сделайте так:

 var sound;
$(document).ready(function(){

        $("ul").on('click','li',function(){
            currentTrack = this.id;
            console.log(currentTrack);
            if(sound)   // check if sound not null pause it
               sound.pause();
            streamTrack(currentTrack);
        });

});
  

ОБНОВЛЕННЫЙ СКРИПИЧНЫЙ

Комментарии:

1. Вау, спасибо, приятель. Я перепробовал много строк кода, чтобы исправить это, но не смог. Спасибо.