Repository navigation
Expand file tree
/
Copy pathscript.js
More file actions
97 lines (84 loc) · 2.73 KB
/
Copy pathscript.js
File metadata and controls
97 lines (84 loc) · 2.73 KB
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
const piano = document.querySelector('.piano'),
pianoKeys = document.querySelectorAll('.piano-key'),
pianoKey = document.querySelector('.piano-key')
pianoBtns = document.querySelectorAll('.piano-btn'),
lettersBtn = document.querySelector('.btn-letters'),
notesBtn = document.querySelector('.btn-notes'),
fullScreenBtn = document.querySelector('.fullscreen'),
body = document.querySelector('body');
function playAudio(e, data) {
const pianoBtn = document.querySelector(`.piano-btn[data-code=${data}]`),
audio = document.querySelector(`audio[data-code=${data}]`);
if (audio) {
audio.currentTime = 0;
audio.play();
pianoBtn.classList.add('piano-key-active', 'piano-key-hover');
setTimeout(() => {
pianoBtn.classList.remove('piano-key-active', 'piano-key-hover');
}, 300);
} else {
return;
}
}
function action (e) {
playAudio(e, e.target.dataset.code);
}
function startSoundOver() {
pianoBtns.forEach(item => {
item.addEventListener('mouseover', action)
})
}
function stopSoundOver () {
pianoBtns.forEach(item => {
item.removeEventListener('mouseover', action)
})
}
function fullScreen(element) {
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.webkitrequestFullscreen) {
element.webkitRequestFullscreen();
} else if (element.mozRequestFullscreen) {
element.mozRequestFullScreen();
}
}
function fullScreenCancel() {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
}
fullScreenBtn.addEventListener('click', () => {
if (fullScreenBtn.classList.contains('openfullscreen')) {
fullScreen(body);
fullScreenBtn.classList.remove('openfullscreen');
} else {
fullScreenCancel(body);
fullScreenBtn.classList.add('openfullscreen');
}
})
window.addEventListener('keypress', e => {
playAudio(e, e.code);
});
piano.addEventListener('mousedown', e => {
playAudio(e, e.target.dataset.code);
});
document.addEventListener('mousedown', startSoundOver);
document.addEventListener('mouseup', stopSoundOver);
lettersBtn.addEventListener('click', () => {
notesBtn.classList.remove('btn-active');
lettersBtn.classList.add('btn-active');
pianoKeys.forEach((i) => {
i.classList.add('piano-key-letter');
})
});
notesBtn.addEventListener('click', () => {
notesBtn.classList.add('btn-active');
lettersBtn.classList.remove('btn-active');
pianoKeys.forEach((i) => {
i.classList.remove('piano-key-letter');
})
});