UNPKG

bodymovin

Version:

After Effects plugin for exporting animations to SVG + JavaScript or canvas + JavaScript

66 lines (59 loc) 1.86 kB
var ImagePreloader = (function(){ var imagesLoadedCb; function imageLoaded(){ this.loadedAssets += 1; if(this.loadedAssets === this.totalImages){ if(imagesLoadedCb) { imagesLoadedCb(null); } } } function getAssetsPath(assetData){ var path = ''; if(this.assetsPath){ var imagePath = assetData.p; if(imagePath.indexOf('images/') !== -1){ imagePath = imagePath.split('/')[1]; } path = this.assetsPath + imagePath; } else { path = this.path; path += assetData.u ? assetData.u : ''; path += assetData.p; } return path; } function loadImage(path){ var img = document.createElement('img'); img.addEventListener('load', imageLoaded.bind(this), false); img.addEventListener('error', imageLoaded.bind(this), false); img.src = path; } function loadAssets(assets, cb){ imagesLoadedCb = cb; this.totalAssets = assets.length; var i; for(i=0;i<this.totalAssets;i+=1){ if(!assets[i].layers){ loadImage.bind(this)(getAssetsPath.bind(this)(assets[i])); this.totalImages += 1; } } } function setPath(path){ this.path = path || ''; } function setAssetsPath(path){ this.assetsPath = path || ''; } return function ImagePreloader(){ this.loadAssets = loadAssets; this.setAssetsPath = setAssetsPath; this.setPath = setPath; this.assetsPath = ''; this.path = ''; this.totalAssets = 0; this.totalImages = 0; this.loadedAssets = 0; } }());