AE tweens
Use tweens of properties's layer in After Effect.
Interpolation to a property.
List of tween's transitions
- easeNone
- easeInQuad
- easeInOutQuad
- easeInCubic
- easeOutCubic
- easeInOutCubic
- easeOutInCubic
- easeInQuart
- easeOutQuart
- easeInOutQuart
- easeOutInQuart
- easeOutQuart
- easeInQuint
- easeOutQuint
- easeInOutQuint
- easeOutInQuint
- easeInSine
- easeOutSine
- easeInOutSine
- easeOutInSine
- easeInExpo
- easeOutExpo
- easeInOutExpo
- easeOutInExpo
- easeInCirc
- easeOutCirc
- easeInOutCirc
- easeOutInCirc
- easeInElastic
- easeOutElastic
- easeInOutElastic
- easeOutInElastic
- easeInBack
- easeOutBack
- easeInOutBack
- easeOutInBack
- easeInBounce
- easeOutBounce
- easeInOutBounce
- easeOutInBounce
Script
var introTime = 1;
var introDatas = [ 0, 0, 0 ];
var introTween = easeOutQuint;
var endTime = 1;
var endDatas = [ 0, 0, 0 ];
var endTween = easeInQuint;
var dontStop = false;
var relative = false;
/*
CALCULATION
*/
var newDatas = [];
var depth = ( thisProperty.value == Number(thisProperty.value) ) ? 1 : thisProperty.value.length;
var datas = ( depth < 2 ) ? new Array(thisProperty) : thisProperty.value;
var i;
if( dontStop )
{
var totalTime = outPoint - inPoint;
var ratio = introTime / ( introTime + endTime );
introTime = totalTime * ratio;
endTime = totalTime * ( 1 - ratio );
}
if( relative )
{
for ( i = 0; i < depth; i++ )
{
introDatas[i] += datas[i];
endDatas[i] += datas[i];
}
}
if ( time < inPoint )
{
for ( i = 0; i < depth; i++ ) newDatas[i] = introDatas[i];
}
else if ( time < inPoint + introTime )
{
for ( i = 0; i < depth; i++ ) newDatas[i] = introTween( time-inPoint, introDatas[i], datas[i]-introDatas[i], introTime );
}
else if( time > outPoint )
{
for ( i = 0; i < depth; i++ ) newDatas[i] = endDatas[i];
}
else if ( time > outPoint - endTime )
{
for ( i = 0; i < depth; i++ ) newDatas[i] = endTween( time + endTime - outPoint, datas[i], endDatas[i]-datas[i], endTime );
}
else
{
for ( i = 0; i < depth; i++ ) newDatas[i] = datas[i];
}
if ( depth < 2 ) newDatas[0];
else newDatas;
/*
List of transitions:
easeNone
easeInQuad
easeInOutQuad
easeInCubic
easeOutCubic
easeInOutCubic
easeOutInCubic
easeInQuart
easeOutQuart
easeInOutQuart
easeOutInQuart
easeOutQuart
easeInQuint
easeOutQuint
easeInOutQuint
easeOutInQuint
easeInSine
easeOutSine
easeInOutSine
easeOutInSine
easeInExpo
easeOutExpo
easeInOutExpo
easeOutInExpo
easeInCirc
easeOutCirc
easeInOutCirc
easeOutInCirc
easeInElastic
easeOutElastic
easeInOutElastic
easeOutInElastic
easeInBack
easeOutBack
easeInOutBack
easeOutInBack
easeInBounce
easeOutBounce
easeInOutBounce
easeOutInBounce
Parameters of transitions:
t - current time of tween
b - starting value of property
c - change needed in value
d - total duration of tween
*/
function easeNone(t, b, c, d)
{
return c*t/d + b;
}
function easeInQuad(t, b, c, d)
{
return c*(t/=d)*t + b;
}
function easeOutQuad(t, b, c, d)
{
return -c *(t/=d)*(t-2) + b;
}
function easeInOutQuad(t, b, c, d)
{
if((t/=d/2) < 1) return c/2*t*t + b;
return -c/2 *((--t)*(t-2) - 1) + b;
}
function easeInCubic(t, b, c, d)
{
return c*(t/=d)*t*t + b;
}
function easeOutCubic(t, b, c, d)
{
return c*((t=t/d-1)*t*t + 1) + b;
}
function easeInOutCubic(t, b, c, d)
{
if((t/=d/2) < 1) return c/2*t*t*t + b;
return c/2*((t-=2)*t*t + 2) + b;
}
function easeOutInCubic(t, b, c, d)
{
if(t < d/2) return easeOutCubic(t*2, b, c/2, d);
return easeInCubic((t*2)-d, b+c/2, c/2, d);
}
function easeInQuart(t, b, c, d)
{
return c*(t/=d)*t*t*t + b;
}
function easeOutQuart(t, b, c, d)
{
return -c *((t=t/d-1)*t*t*t - 1) + b;
}
function easeInOutQuart(t, b, c, d)
{
if((t/=d/2) < 1) return c/2*t*t*t*t + b;
return -c/2 *((t-=2)*t*t*t - 2) + b;
}
function easeOutInQuart(t, b, c, d)
{
if(t < d/2) return easeOutQuart(t*2, b, c/2, d);
return easeInQuart((t*2)-d, b+c/2, c/2, d);
}
function easeInQuint(t, b, c, d)
{
return c*(t/=d)*t*t*t*t + b;
}
function easeOutQuint(t, b, c, d)
{
return c*((t=t/d-1)*t*t*t*t + 1) + b;
}
function easeInOutQuint(t, b, c, d)
{
if((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
return c/2*((t-=2)*t*t*t*t + 2) + b;
}
function easeOutInQuint(t, b, c, d)
{
if(t < d/2) return easeOutQuint(t*2, b, c/2, d);
return easeInQuint((t*2)-d, b+c/2, c/2, d);
}
function easeInSine(t, b, c, d)
{
return -c * Math.cos(t/d *(Math.PI/2)) + c + b;
}
function easeOutSine(t, b, c, d)
{
return c * Math.sin(t/d *(Math.PI/2)) + b;
}
function easeInOutSine(t, b, c, d)
{
return -c/2 *(Math.cos(Math.PI*t/d) - 1) + b;
}
function easeOutInSine(t, b, c, d)
{
if(t < d/2) return easeOutSine(t*2, b, c/2, d);
return easeInSine((t*2)-d, b+c/2, c/2, d);
}
function easeInExpo(t, b, c, d)
{
return(t==0) ? b : c * Math.pow(2, 10 *(t/d - 1)) + b - c * 0.001;
}
function easeOutExpo(t, b, c, d)
{
return(t==d) ? b+c : c * 1.001 *(-Math.pow(2, -10 * t/d) + 1) + b;
}
function easeInOutExpo(t, b, c, d)
{
if(t==0) return b;
if(t==d) return b+c;
if((t/=d/2) < 1) return c/2 * Math.pow(2, 10 *(t - 1)) + b - c * 0.0005;
return c/2 * 1.0005 *(-Math.pow(2, -10 * --t) + 2) + b;
}
function easeOutInExpo(t, b, c, d)
{
if(t < d/2) return easeOutExpo(t*2, b, c/2, d);
return easeInExpo((t*2)-d, b+c/2, c/2, d);
}
function easeInCirc(t, b, c, d)
{
return -c *(Math.sqrt(1 -(t/=d)*t) - 1) + b;
}
function easeOutCirc(t, b, c, d)
{
return c * Math.sqrt(1 -(t=t/d-1)*t) + b;
}
function easeInOutCirc(t, b, c, d)
{
if((t/=d/2) < 1) return -c/2 *(Math.sqrt(1 - t*t) - 1) + b;
return c/2 *(Math.sqrt(1 -(t-=2)*t) + 1) + b;
}
function easeOutInCirc(t, b, c, d)
{
if(t < d/2) return easeOutCirc(t*2, b, c/2, d);
return easeInCirc((t*2)-d, b+c/2, c/2, d);
}
function easeInElastic(t, b, c, d, a, p)
{
var s;
if(t==0) return b; if((t/=d)==1) return b+c; if(!p) p=d*.3;
if(!a || a < Math.abs(c)) { a=c; s=p/4; } else s = p/(2*Math.PI) * Math.asin(c/a);
return -(a*Math.pow(2,10*(t-=1)) * Math.sin((t*d-s)*(2*Math.PI)/p )) + b;
}
function easeOutElastic(t, b, c, d, a, p)
{
var s;
if(t==0) return b; if((t/=d)==1) return b+c; if(!p) p=d*.3;
if(!a || a < Math.abs(c)) { a=c; s=p/4; } else s = p/(2*Math.PI) * Math.asin(c/a);
return(a*Math.pow(2,-10*t) * Math.sin((t*d-s)*(2*Math.PI)/p ) + c + b);
}
function easeInOutElastic(t, b, c, d, a, p)
{
var s;
if(t==0) return b; if((t/=d/2)==2) return b+c; if(!p) p=d*(.3*1.5);
if(!a || a < Math.abs(c)) { a=c; s=p/4; } else s = p/(2*Math.PI) * Math.asin(c/a);
if(t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin((t*d-s)*(2*Math.PI)/p )) + b;
return a*Math.pow(2,-10*(t-=1)) * Math.sin((t*d-s)*(2*Math.PI)/p )*.5 + c + b;
}
function easeOutInElastic(t, b, c, d, a, p)
{
if(t < d/2) return easeOutElastic(t*2, b, c/2, d, a, p);
return easeInElastic((t*2)-d, b+c/2, c/2, d, a, p);
}
function easeInBack(t, b, c, d, s)
{
if(s == undefined) s = 1.70158;
return c*(t/=d)*t*((s+1)*t - s) + b;
}
function easeOutBack(t, b, c, d, s)
{
if(s == undefined) s = 1.70158;
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
}
function easeInOutBack(t, b, c, d, s)
{
if(s == undefined) s = 1.70158;
if((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
}
function easeOutInBack(t, b, c, d, s)
{
if(t < d/2) return easeOutBack(t*2, b, c/2, d, s);
return easeInBack((t*2)-d, b+c/2, c/2, d, s);
}
function easeInBounce(t, b, c, d)
{
return c - easeOutBounce(d-t, 0, c, d) + b;
}
function easeOutBounce(t, b, c, d)
{
if((t/=d) <(1/2.75)) {
return c*(7.5625*t*t) + b;
} else if(t <(2/2.75)) {
return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
} else if(t <(2.5/2.75)) {
return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
} else {
return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
}
}
function easeInOutBounce(t, b, c, d)
{
if(t < d/2) return easeInBounce(t*2, 0, c, d) * .5 + b;
else return easeOutBounce(t*2-d, 0, c, d) * .5 + c*.5 + b;
}
function easeOutInBounce(t, b, c, d)
{
if(t < d/2) return easeOutBounce(t*2, b, c/2, d);
return easeInBounce((t*2)-d, b+c/2, c/2, d);
}