UNPKG

raingame

Version:
48 lines (46 loc) 1.57 kB
import FileElement from './FileElement'; class Files { total: number = 0; loadedNumber: number = 0; audios: Array<FileElement<HTMLAudioElement>> = []; images: Array<FileElement<HTMLImageElement>> = []; constructor(files: Array<string>) { let me = this; this.total = files.length; for (const iterator of files) { if (/.(mp3|ogg)$/.test(iterator)) { let audio = new Audio(); audio.addEventListener('load', () => { me.loadedNumber++; me.onload(me); me.isReady(); }) let element = new FileElement(audio, '123'); this.audios.push(element); audio.src = iterator; } else if (/.(jpg|png|gif|jpeg)$/.test(iterator)) { let image = new Image(); image.addEventListener('load', () => { me.loadedNumber++; me.onload(me); me.isReady(); }) let element = new FileElement(image, '123'); this.images.push(element); image.src = iterator; } } } onload(xhr: Files) { console.log(xhr.loadedNumber, xhr.total); } onReady() { console.log('The load of files is complete'); } isReady() { if (this.total === this.loadedNumber) { this.onReady(); } } } export default Files;