-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
119 lines (94 loc) · 3.07 KB
/
main.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
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/******* PLAN !!!! PARTIE 1 ********
1. Récuperer tout les audios
2. Récuperer toutes les cases
3. Ecouteur d'événement **addListener** sur la fenetre de type ***keydown*** qui lance une ****audio.play())****
4. *** IF *** l'evenement est égale au data-key d'un des elements du tableau audio
5. Je récupere l'element et je joue le son + j'ajoute l'animation (ajouter class)
6. DANS KEYDOWN Mettre un 2eme écouteur d'evenement de type ****KEYUP**** = transition end + remove playing sound
7. Si on lache la touche du clavier *****KEYUP**** on arrète le son et on supprime les animations
**************/
let audio = document.querySelectorAll('audio');
let keys = document.querySelectorAll('.key');
console.log(keys)
console.log(audio)
window.addEventListener('keydown', function(event) {
keys.forEach (clef =>{
if (clef.dataset.key == event.keyCode){
clef.classList.add('playing', 'sound')
clef.addEventListener('transitionend', function(){
clef.classList.remove('playing', 'sound')
})
audio.forEach(audio=>{
if (audio.dataset.key == event.keyCode){
audio.play();
}
})
}
})
});
/******* PLAN !!!! PARTIE 2 ********
1. La fonction **** beatBox() **** contient 2 fonctions :
- une fonction **** simulateKey()**** qui simule la pression d'une touche de clavier (ce qui permet de déclencher le code de votre drumpad déjà fait)
(Pour simuler la pression d'une touche, je veux créer et paramétrer un nouvel event js
ensuite je veux dispatch cet event dans le document)
- une fonction **** playBeat() **** qui renvoie une nouvelle promesse *** .then ***
2. Dans la fonction **** beatBox() **** toujours, faites une chaîne de promesse pour créer un beat = **** playBeat() ****
**************/
function beatBox() {
function simulateKey (key) {
let btnbeat = new Event('keydown',{
bubbles : true
});
btnbeat.keyCode = key
window.dispatchEvent(btnbeat)
}
function playBeat(time,key){
return new Promise ((resolve,reject) => {
setTimeout(() => {
resolve(simulateKey(key));
}, time);
})
}
playBeat(300,83).then(() => {
return playBeat(300,87)
})
.then(() => {
return playBeat(300,67)
})
.then(() => {
return playBeat(300,69)
})
.then(() => {
return playBeat(300,87)
})
.then(() => {
return playBeat(300,67)
})
.then(() => {
return playBeat(300,65)
})
.then(() => {
return playBeat(300,83)
})
.then(() => {
return playBeat(300,67)
})
.then(() => {
return playBeat(300,69)
})
.then(() => {
return playBeat(300,90)
})
.then(() => {
return playBeat(300,87)
})
.then(() => {
return playBeat(300,67)
})
.then(() => {
return playBeat(300,65)
})
.then(() => {
return playBeat(300,83)
})
}