0

私は非常にひどいプログラマーであり、私が何を尋ねているかについてほとんど知りません。何を検索すればよいかよくわからないため、これに対する答えを検索するのは困難です。

配列内の次のトラックを再生する JavaScript 関数があります (このコードは今ではおなじみのようです!):

function loadPlayer() {
    var audioPlayer = new Audio();
    audioPlayer.controls=false;
    audioPlayer.preload="auto";
    audioPlayer.addEventListener('ended',nextSong,false);
    audioPlayer.addEventListener('error',errorFallback,true);
    audioPlayer.addEventListener('timeupdate',updateProgress, false);
    document.getElementById("player").appendChild(audioPlayer);
    nextSong();
}

function nextSong() {
    if(urls[next]!=undefined) {
        var audioPlayer = document.getElementsByTagName('audio')[0];
        if(audioPlayer!=undefined) {
            audioPlayer.src=urls[next];
            audioPlayer.load();
            audioPlayer.play();
            next++;
        } else {
            loadPlayer();
        }
    } else {
        alert('file missing!');
    }
}
function errorFallback() {
        nextSong();
}

これは、次の方法で関数を呼び出すと機能します。

<a href="#" onclick="nextSong()">Next!</a>

ただし、pickSong 関数を使用して配列内の項目 (項目 4 など) を選択した場合、[次へ] をクリックすると、配列内の 2 番目の項目に戻り、そこから続行します。トラック選択機能は次のとおりです。

function pickSong(num) {
    next = num;
    nextSong();
}

var urls = new Array();
    urls[0] = '01_horses_mouth/mp3/01. Let The Dog See The Rabbit preface.mp3';
    urls[1] = '01_horses_mouth/mp3/02. The Other Horse\'s Tale.mp3';
    urls[2] = '01_horses_mouth/mp3/03. Caged Tango.mp3';
    urls[3] = '01_horses_mouth/mp3/04. Crumbs.mp3';

var next = 0;

私はこれから何が欠けていますか?

編集:私はそれを解決したようです(最初はうまくいったかもしれませんが、今ではうまくいきます):

function nextSong() {
    if(urls[next]!=undefined) {
        var audioPlayer = document.getElementsByTagName('audio')[0];
        if(audioPlayer!=undefined) {
            audioPlayer.src=urls[next];
            audioPlayer.load();
            audioPlayer.play();
            $('#playlistTitle').html(trackTitles[next++]);
        } else {
            loadPlayer();
        }
    } else {
        alert('file missing!');
    }
}

URLのタイトルを解析する方法を一生理解できなかったため、タイトルの新しい配列を作成する必要がありました。「現在再生中」のトラック タイトルの内外で非常に複雑な切り替えを行っていたため、プレイリスト タイトル div は既に存在していました。

4

0 に答える 0