Я использую Amplitude.js для воспроизведения песен, которые динамичны. Серверный скрипт php.
Моя цель - проверить, воспроизводится ли какая-либо песня, и если да, то перед тем, как эта страница будет удалена, сохраните индекс этой песни и текущую позицию (в процентах).
Затем на следующей странице я должен продолжить эту песню с той же позиции. Пока что мне удалось воспроизвести ту же песню на следующей странице, но она воспроизводится с самого начала.
Здесь $ feat - массив, созданный как:
$featured = array();
foreach ($all as $key => $value) {
array_push($featured, array(
"id" => $value['audio_id'],
"name" => $value['audio_name'],
"artist" => $value['audio_artist'],
"album" => $value['product_name'],
"url" => l($value['audio_file_path'].$value['audio_file']),
"cover_art_url" =($value['product_image_path'].$value['product_image']),
));
}
Мой код JavaScript для инициализации Amplitude js:
<script>
Amplitude.setDebug( true );
let _songs = JSON.parse('<?=$feat?>');
Amplitude.init({
"songs":_songs,
});
</script>
При изменении каждой страницы я сохраняю текущий индекс песни и текущий процент проигранной песни. Работает нормально.
Home / song_stats сохранит информацию о песне в сеансе
<script>
$(window).on("beforeunload", function() {
song_percent = Amplitude.getSongPlayedPercentage();
song_index = Amplitude.getActiveIndex();
$.ajax({
type: "POST",
url: "<?=g('base_url')?>Home/song_stats",
data: "song_percent="+song_percent+"&song_index="+song_index,
dataType: "json"
});
return false;
});
</script>
Этот javascript-код воспроизводит песню по щелчку, и, если доступны какие-либо данные сеанса для продолжения песни, он продолжит эту песню.
<script>
$(window).load(function(){
function playmysongs(_index){
$('div[amplitude-song-index="'+_index+'"]').click();
}
var appender = '';
for(var i =0;i<_songs.length;i++){
appender+='<div class="rixinside-list"><a onclick="playmysongs('+i+')"><span class="album_img"><img src="'+_songs[i].cover_art_url+'" class="img-responsive"/></span><span class="album_name">'+_songs[i].album+'<span class="album_artist">'+_songs[i].artist+'</span></span></a></div>';
}
$('#playlist-container .rixplaylist').append(appender);
//cont song
$.ajax({
type: "POST",
url: "<?=g('base_url')?>Home/continue_song",
data: "",
dataType: "json",
success: function(response){
playmysongs(response.song_index);
Amplitude.setSongPlayedPercentage(response.song_percent);
}
});
return false;
//cont song end
});
$('#playlist-container').click(function(){
$('.rixplaylist').toggle();
});
$('#wishlist-container i').click(function(){
$(this).toggleClass('like');
});
Строка ниже не работает, хотя "response.song_percent" показывает правильное значение. Любая помощь будет оценена.
Amplitude.setSongPlayedPercentage (response.song_percent);