|
- function AudioForm(el) {
- const interval = el.elements['interval']
- const play = el.elements['play']
- const output = el.querySelector('output')
- const audioPool = []
- let intervalHandle = null
- let audioIndex = 0
- const items = 50
-
- for (let i = 0; i < items; i += 1) {
- const newAudio = new Audio('./sfx/weapons/guns/smg-hkmp7/1_unload_var0.wav')
- newAudio.volume = 0.2;
- newAudio.addEventListener('canplaythrough', () => {
- audioPool[i].ready = true
- })
- newAudio.addEventListener('ended', () => {
- newAudio.pause()
- newAudio.currentTime = 0
- })
-
- audioPool[i] = {
- audio: newAudio,
- ended: true,
- ready: false,
- }
- newAudio.load()
- }
-
- const playSound = () => {
- for (let i = 0; i < items; i += 1) {
- if (!audioPool[i].ready) {
- return;
- }
- }
-
- audioPool[audioIndex].audio.play();
- audioIndex = (audioIndex + 1) % items;
- }
-
- el.addEventListener('submit', (e) => {
- e.preventDefault()
-
- const ms = 60000 / Number(interval.value);
- output.innerText = `${ms} ms`
- if (play.checked) {
- intervalHandle = window.setInterval(() => {
- playSound()
- }, ms)
- } else {
- window.clearInterval(intervalHandle);
- }
-
- play.checked = !play.checked
- })
- }
-
- const audioForm = new AudioForm(window.document.getElementById('formAudio'))
|