サウンドマネージャー2で音楽を再生する機能があり、ボタンを押して次のサウンドをロードすると機能しますが、機能を介してこれを実行しようとするとonfinish
機能しません。つまり、音楽の再生が終了しても機能しません。次のサウンドをロードします。これを機能させるにはどうすればよいですか。以下のコードを参照してください。
function playSong(id) {
//Stop the sound from playing
soundManager.destroySound(mySound);
//If we're under, just go to the end!
if (id < 0)
id = songs.length - 1;
//If we're over, choose what to do via the repeat flag
if (id >= songs.length)
id = 0;
//Save some variables
playingSongId = id;
playingSong = songs[playingSongId];
track = playingSong.artist_name + " " + "-" + " " + playingSong.track_name;
//Create the sound and begin playing whenever!
soundManager.createSound({
id: mySound,
url: playingSong.track_url,
multiShotEvents: true,
autoPlay: true,
stream: true,
onplay: function () {
setPlayingInfo(track);
setPauseState(false);
setPlayTime();
},
onfinish: function() {
playNextSong();
/*//We'll only continue if we're shuffling or repeating if we past the end...
if (shuffle == false && (playingSongId + 1 >= songs.length) && repeat == false) {
//No more songs...
setPlayingInfo();
setPauseState(false);
setPlayTime();
playingSong = null;
playingSongId = null;
return;
}
else {
playNextSong();
}*/
},
この関数は、次のサウンドのタイトルがヘッダーに表示されるため機能しますが、曲は再生されません。最後に、サウンドのロードと再生中に最初のサウンド リンクをクリックすると、タイトルがロードされませんが、ボタンをクリックして次のサウンドをロードすると、タイトルが表示されます。サウンドはリモート サーバー上にあるため、これらのサウンドを ajax 経由でロードしていることに注意してください。