-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaudio.js
52 lines (47 loc) · 1.34 KB
/
audio.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Plays music.wav during gameplay
const url = "./audio/music.wav";
let audioElement;
const controlMusic = document.querySelector(".control-music");
let isPlaying = false;
let isMute = false;
function loadAudio() {
audioElement = new Audio(url);
audioElement.loop = true;
document.querySelector(".music").addEventListener("click", function () {
if (isPlaying) {
// Mute music
isMute = true;
stopAudio();
controlMusic.innerHTML = '<i class="fas fa-volume-mute"></i>';
} else {
// Play music
isMute = false;
playAudio();
controlMusic.innerHTML = '<i class="fas fa-volume-up"></i>';
}
isPlaying = !isPlaying;
});
}
function playAudio(url) {
if (!isMute) {
let playPromise = audioElement.play();
if (playPromise !== undefined) {
playPromise
.then(function () {
// Automatic playback started!
isPlaying = true;
controlMusic.innerHTML = '<i class="fas fa-volume-up"></i>';
})
.catch(function (error) {
isPlaying = false;
// Automatic playback failed.
// Show a UI element to let the user manually start playback.
controlMusic.innerHTML = '<i class="fas fa-volume-mute"></i>';
});
}
}
}
function stopAudio() {
audioElement.pause();
}
export { loadAudio, playAudio, stopAudio };