blob: b66700c3c2a83970fd9396e8bb902c378fef6bde [file] [log] [blame]
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){
registeredAnimations[i].animation.advanceTime(elapsedTime);
}
initTime = nowTime;
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 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;
return moduleOb;
}());