diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2019-01-07 23:01:11 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2019-01-07 23:01:11 +0100 |
| commit | 4777c058469847cbe02eb2a24634b21ee37384fc (patch) | |
| tree | 3fd87861241a75f59819bc0771eb3e97bd88e2f6 /docs/assets/js/player.js | |
| parent | d317978119fc0936d9c342edf47e55be230cd215 (diff) | |
move docs
Diffstat (limited to 'docs/assets/js/player.js')
| -rw-r--r-- | docs/assets/js/player.js | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/docs/assets/js/player.js b/docs/assets/js/player.js new file mode 100644 index 0000000..25fdfd6 --- /dev/null +++ b/docs/assets/js/player.js @@ -0,0 +1,79 @@ +const player = (function(){ + let player = {} + let current_index = -1 + let audio = document.createElement('audio') + let tracks = [ + { file: "mp3/xena_vectra-cruise.mp3", title: "Cruise" }, + { file: "mp3/xena_vectra-dreaming_city_2.mp3", title: "Dreaming City 2" }, + { file: "mp3/xena_vectra-escape_from_nk.mp3", title: "Escape from Neukölln" }, + ] + function init(){ + bind() + build() + // play(0) + } + function bind(){ + audio.addEventListener('play', handlePlay) + audio.addEventListener('pause', handlePause) + audio.addEventListener('ended', handleEnded) + document.querySelector('.player .icon').addEventListener('click', togglePlaying) + document.querySelector('.player .track').addEventListener('click', play) + document.querySelector('.player .playlistToggle').addEventListener('click', togglePlaylist) + } + function build() { + tracks.forEach((track, i) => { + let el = document.createElement('li') + el.innerHTML = track.title + el.addEventListener('click', () => { + if (is_mobile) { + hidePlaylist() + } + shards.rebuild() + play(i) + }) + document.querySelector('.playlist ul').appendChild(el) + }) + document.querySelector('.player .track').innerHTML = tracks[0].title + } + function play(n){ + const active = document.querySelector('.playlist ul .active') + if (active) active.classList.remove('active') + document.querySelector('.playlist ul').children[n].classList.add('active') + + current_index = (n + tracks.length) % tracks.length + audio.src = tracks[n].file + audio.play() + document.querySelector('.player .track').innerHTML = tracks[n].title + } + function handlePlay(){ + document.querySelector('.player').classList.add('playing') + document.querySelector('.player').classList.remove('paused') + shards.step() + } + function handlePause(){ + document.querySelector('.player').classList.remove('playing') + document.querySelector('.player').classList.add('paused') + } + function handleEnded(){ + shards.rebuild() + play(current_index+1) + } + function togglePlaying() { + // sounds.play('click') + if (current_index == -1) { + play(0) + } else { + if (audio.paused) audio.play() + else audio.pause() + } + } + function togglePlaylist() { + site.navigateHash('') + document.querySelector('.playlist').classList.toggle('visible') + } + function hidePlaylist() { + document.querySelector('.playlist').classList.remove('visible') + } + init() + return { hidePlaylist } +})()
\ No newline at end of file |
