Я работаю над аудиоплеером, и я хочу, чтобы люди могли играть и приостанавливать музыку с помощью пробела. У меня есть работа. К сожалению, сценарий работает только с первым игроком (когда кто-то нажимает на песню, часть игрока загружается в верхней части экрана). Итак, как только первая часть исчезнет. Функция воспроизведения и паузы не работает снова. Какие-либо предложения.Keypress Pause and Play Audio
$(document).keydown(function(event) {
if (event.keyCode == 32) {
if (!mytrack.paused && !mytrack.ended) {
mytrack.pause();
play.innerHTML = "<i class='fa fa-play'></i>";
window.clearInterval(updateTime);
} else {
mytrack.play();
play.innerHTML = "<i class='fa fa-pause'></i>";
updateTime = setInterval(update, 500);
}
return false;
}
});
Полный код
var mytrack = document.getElementById("sound");
var play = document.getElementById("play");
var currentTime = document.getElementById("current-time");
var totalTime = document.getElementById("total-time");
var defaultBar = document.getElementById("default-bar");
var progressBar = document.getElementById("progress-bar");
var barSize;
defaultBar.addEventListener('click', clickedBar, false);
mytrack.addEventListener('loadedmetadata', function() {
mytrack.play();
updateTime = setInterval(update, 500);
play.innerHTML = "<i class='fa fa-pause'></i>";
var minutes = parseInt(mytrack.duration/60);
var seconds = parseInt(mytrack.duration % 60);
if (seconds < 10) {
totalTime.innerHTML = minutes + ":0" + seconds;
} else {
totalTime.innerHTML = minutes + ":" + seconds;
}
});
function playOrPause() {
if (!mytrack.paused && !mytrack.ended) {
mytrack.pause();
play.innerHTML = "<i class='fa fa-play'></i>";
window.clearInterval(updateTime);
} else {
mytrack.play();
play.innerHTML = "<i class='fa fa-pause'></i>";
updateTime = setInterval(update, 500);
}
}
function update() {
if(!mytrack.ended) {
// CURRENT TIME TO READABLE TIME
var minutes = parseInt(mytrack.currentTime/60);
var seconds = parseInt(mytrack.currentTime % 60);
if (seconds < 10) {
currentTime.innerHTML = minutes + ":0" + seconds;
} else {
currentTime.innerHTML = minutes + ":" + seconds;
}
// BAR
var progressBarSize = parseInt(mytrack.currentTime * barSize /mytrack.duration);
progressBar.style.width = progressBarSize + "px";
barSize = defaultBar.offsetWidth;
} else {
currentTime.innerHTML = "0:00";
play.innerHTML = "<i class='fa fa-play'></i>";
// Bar
progressBar.style.width = "0px";
// TIMER
window.clearInterval(updateTime);
}
}
function clickedBar(e) {
if(!mytrack.ended) {
var mouseX = e.pageX - defaultBar.offsetLeft;
var newTime = mouseX * mytrack.duration/barSize;
mytrack.currentTime = newTime;
progressBar.style.width = mouseX + "px";
}
}
Где и когда создается 'myTrack'? Если это ваш первый игрок, и вы затем создаете больше, обработчик, который у вас есть прямо сейчас, знает только о 'myTrack' – mczepiel
. Редактируйте сообщение с полным кодом игрока. Игрок загружается частичным. Таким образом, только один игрок на самом деле находится на странице за раз. Когда вы нажимаете новую песню, предыдущее исчезает. Спасибо за комментарий! –
Возможно, это связано с тем, что вы привязываете прослушиватель событий щелчка к первому частичному, но как только первая частичная часть исчезнет, событие не связано со вторым частичным (игроком), если это имеет смысл. Имейте функцию, которая повторно привязывает ее после загрузки следующего игрока. –