| var animationManager = (function(){ |
| var moduleOb = {}; |
| var registeredAnimations = []; |
| var initTime = 0; |
| var isPaused = true; |
| var len = 0; |
| |
| function registerAnimation(element){ |
| if(!element){ |
| return null; |
| } |
| var i=0; |
| while(i<len){ |
| if(registeredAnimations[i].elem == element && registeredAnimations[i].elem !== null ){ |
| return registeredAnimations[i].animation; |
| } |
| i+=1; |
| } |
| var animItem = new AnimationItem(); |
| animItem.setData(element); |
| registeredAnimations.push({elem: element,animation:animItem}); |
| len += 1; |
| return animItem; |
| } |
| |
| function loadAnimation(params){ |
| var animItem = new AnimationItem(); |
| animItem.setParams(params); |
| registeredAnimations.push({elem: null,animation:animItem}); |
| len += 1; |
| return animItem; |
| } |
| |
| |
| function setSpeed(val,animation){ |
| var i; |
| for(i=0;i<len;i+=1){ |
| registeredAnimations[i].animation.setSpeed(val, animation); |
| } |
| } |
| |
| function setDirection(val, animation){ |
| var i; |
| for(i=0;i<len;i+=1){ |
| registeredAnimations[i].animation.setDirection(val, animation); |
| } |
| } |
| |
| function play(animation){ |
| var i; |
| for(i=0;i<len;i+=1){ |
| registeredAnimations[i].animation.play(animation); |
| } |
| } |
| |
| function moveFrame (value, animation) { |
| isPaused = false; |
| initTime = Date.now(); |
| var i; |
| for(i=0;i<len;i+=1){ |
| registeredAnimations[i].animation.moveFrame(value,animation); |
| } |
| } |
| |
| function resume() { |
| var nowTime = Date.now(); |
| var elapsedTime = nowTime - initTime; |
| var i; |
| for(i=0;i<len;i+=1){ |
| if(registeredAnimations[i].animation.renderer.destroyed) { |
| registeredAnimations.splice(i,1); |
| i -= 1; |
| len -= 1; |
| }else{ |
| registeredAnimations[i].animation.advanceTime(elapsedTime); |
| } |
| } |
| initTime = nowTime; |
| //setTimeout(resume,10); |
| requestAnimationFrame(resume); |
| } |
| |
| function pause(animation) { |
| var i; |
| for(i=0;i<len;i+=1){ |
| registeredAnimations[i].animation.pause(animation); |
| } |
| } |
| |
| function goToAndStop(value,isFrame,animation) { |
| var i; |
| for(i=0;i<len;i+=1){ |
| registeredAnimations[i].animation.goToAndStop(value,isFrame,animation); |
| } |
| } |
| |
| function stop(animation) { |
| var i; |
| for(i=0;i<len;i+=1){ |
| registeredAnimations[i].animation.stop(animation); |
| } |
| } |
| |
| function togglePause(animation) { |
| var i; |
| for(i=0;i<len;i+=1){ |
| registeredAnimations[i].animation.togglePause(animation); |
| } |
| } |
| |
| function destroy(animation) { |
| var i; |
| for(i=0;i<len;i+=1){ |
| registeredAnimations[i].animation.destroy(animation); |
| } |
| } |
| |
| function searchAnimations(){ |
| var animElements = document.getElementsByClassName('bodymovin'); |
| Array.prototype.forEach.call(animElements,registerAnimation); |
| } |
| |
| function resize(){ |
| var i; |
| for(i=0;i<len;i+=1){ |
| registeredAnimations[i].animation.resize(); |
| } |
| } |
| |
| function start(){ |
| initTime = Date.now(); |
| requestAnimationFrame(resume); |
| } |
| //start(); |
| |
| setTimeout(start,0); |
| |
| moduleOb.registerAnimation = registerAnimation; |
| moduleOb.loadAnimation = loadAnimation; |
| moduleOb.setSpeed = setSpeed; |
| moduleOb.setDirection = setDirection; |
| moduleOb.play = play; |
| moduleOb.moveFrame = moveFrame; |
| moduleOb.pause = pause; |
| moduleOb.stop = stop; |
| moduleOb.togglePause = togglePause; |
| moduleOb.searchAnimations = searchAnimations; |
| moduleOb.resize = resize; |
| moduleOb.start = start; |
| moduleOb.goToAndStop = goToAndStop; |
| moduleOb.destroy = destroy; |
| return moduleOb; |
| }()); |