export default class ImageLoader { images = []; numberImagesLoaded = 0; constructor() { this.onLoad = () => {} } update() { this.numberImagesLoaded++; if (this.numberImagesLoaded === this.images.length) { window.dispatchEvent(new Event('imagesloaded')); this.onLoad(); } } isComplete() { return this.numberImagesLoaded === this.images.length; } getCurrentProgress() { return this.numberImagesLoaded / this.images.length; } addImage(imagePath) { this.images.push(imagePath); } load() { for (const imagePath of this.images) { let image = new Image(); image.src = imagePath; image.addEventListener( 'load', () => { this.update(); } ); } } }