Я создаю 5 игр с javascript и html5, и я использую звук. У меня есть кнопка отключения звука, которая активирует функцию ниже. Дело в том, что я хочу сделать так, чтобы, если я нажму кнопку отключения звука, и я перейду на другую страницу, она все равно будет отключена, но я не могу понять, как ее интегрировать в эту функцию. Если кто-то может мне помочь, отредактировав код, я бы действительно его оценил: D
function init(){
audio = new Audio();
audio.src = "sound/paint_Music.mp3";
audio.loop = true;
audio.autoplay = true;
mutebtn = document.getElementById("mutebtn");
mutebtn.addEventListener("click", mute);
function mute(){
if (audio.muted){
audio.muted = false;
document.getElementById("mutebtn").src = "img/soundON.png";
} else {
audio.muted = true;
document.getElementById("mutebtn").src = "img/soundOFF.png";
}
}
}
Измените свою функцию следующим образом:
function init() {
audio = new Audio();
audio.src = "sound/paint_Music.mp3";
audio.loop = true;
audio.autoplay = true;
var muteState = localStorage.getItem('muteState');
if (!muteState || muteState !== 'true') {
audio.muted = false;
document.getElementById("mutebtn").src = "img/soundON.png";
}
else {
audio.muted = true;
document.getElementById("mutebtn").src = "img/soundOFF.png";
}
mutebtn = document.getElementById("mutebtn");
mutebtn.addEventListener("click", mute);
function mute() {
if (audio.muted) {
audio.muted = false;
document.getElementById("mutebtn").src = "img/soundON.png";
} else {
audio.muted = true;
document.getElementById("mutebtn").src = "img/soundOFF.png";
}
localStorage.setItem('muteState', String(audio.muted));
}
}
Добавьте приглушенное значение в ваш localStorage
в localStorage
"mute".
function mute(){
...
audio.muted = false;
localStorage.setItem('muted', 'false');
} else {
audio.muted = true;
localStorage.setItem('muted', 'true');
}
}
}
Затем в init
localStorage
значение localStorage
или значение по умолчанию false
если оно не было установлено ранее.
function init(){
audio = new Audio();
audio.src = "sound/paint_Music.mp3";
audio.loop = true;
audio.autoplay = true;
var isMuted = (localStorage.getItem("muted") && localStorage.getItem("muted") == 'true') || false
audio.muted = isMuted;
mutebtn = document.getElementById("mutebtn");
mutebtn.addEventListener("click", mute);
}
localStorage.getItem("muted")
=> "false"
=> true
который не всегда дает желаемый результат. Другими словами, непустые строки неявно преобразуются в true
независимо от их содержимого.