var Tween = {
선형: function(t,b,c,d){ return c*t/db; },
쿼드: {
easyIn: function(t,b,c,d){
return c*(t/=d)*t b;
},
easyOut: 함수 (t,b,c,d){
return -c *(t/=d)*(t-2) b;
},
easyInOut: 함수(t,b,c,d ){
if ((t/=d/2) < 1) return c/2*t*t b;
return -c/2 * ((--t)*(t-2) - 1) b;
}
},
큐빅: {
easyIn: function(t,b,c,d){
return c*(t/=d)*t* t b;
},
easyOut: function(t,b,c,d){
return c*((t=t/d-1)*t*t 1) b;
},
easyInOut: function(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;
}
},
Quart: {
easyIn: function(t,b,c,d){
return c*(t/=d)*t*t*t b;
},
easyOut: function(t,b,c,d){
return -c * ((t =t/d-1)*t*t*t - 1) b;
},
easyInOut: function(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;
}
},
Quint: {
easyIn: function(t,b,c,d){
return c*(t/=d)*t*t*t*t b;
},
easyOut: function(t,b,c,d){
return c*((t=t/d-1)*t*t*t*t 1) b;
},
easyInOut: function(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;
}
},
사인: {
easyIn: function(t,b,c,d){
return -c * Math.cos(t/d * (Math.PI/2)) c b;
},
easyOut: function(t,b,c,d){
return c * Math.sin(t/d * (Math.PI/2)) b;
},
easyInOut: function(t,b,c,d){
return -c/2 * (Math.cos(Math.PI*t/d) - 1) b;
}
},
Expo: {
easyIn: function(t,b,c,d){
return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) b;
},
easyOut: function(t,b,c,d){
return (t= =디) ? b c : c * (-Math.pow(2, -10 * t/d) 1) b;
},
easyInOut: function(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;
return c/2 * (-Math.pow(2, -10 * --t) 2) b;
}
},
원: {
easyIn: function(t,b,c,d){
return -c * (Math.sqrt(1 - (t/=d)*t) - 1) b;
},
easyOut: function(t,b,c,d){
return c * Math.sqrt(1 - (t=t/d-1)*t) b;
},
easyInOut : 함수(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;
}
},
Elastic: {
easyIn: 함수 (t,b,c,d,a,p){
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; var s=p/4; }
else var 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;
},
easyOut: function(t,b,c,d,a,p){
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; var s=p/4; }
else var 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);
},
easyInOut: function(t,b,c,d,a,p){
if (t ==0) b를 반환; if ((t/=d/2)==2) return b c; if (!p) p=d*(.3*1.5);
if (!a || a < Math.abs(c)) { a=c; var s=p/4; }
else var 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;
}
},
뒤로: {
easyIn: function(t,b,c,d,s){
if (s == 정의되지 않음) s = 1.70158;
return c*(t/=d)*t*((s 1)* t - s) b;
},
easyOut: function(t,b,c,d,s){
if (s == 정의되지 않음) s = 1.70158;
return c*( (t=t/d-1)*t*((s 1)*t s) 1) b;
},
easyInOut: function(t,b,c,d,s){
if (s == 정의되지 않음) 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;
}
},
바운스: {
easyIn: function(t,b,c,d){
return c - Tween.Bounce.easeOut(d-t, 0, c, d) b;
},
easyOut: function(t,b,c,d){
if ((t/=d) < (1/2.75)) {
return c*(7.5625*t*t) b ;
} else if (t return c*(7.5625*(t-=(1.5/2.75))*t .75) b;
} else if (t 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;
}
},
easyInOut: function(t,b,c,d){
if (t < d/2) return Tween.Bounce.easeIn(t*2, 0, c, d) * .5 b;
else return Tween.Bounce.easeOut(t*2-d, 0, c, d ) * .5 c*.5 b;
}
}
}
각 easing 메소드는 3가지 유형에 해당합니다.
easeIn: 0부터 시작 가속 완화;
easeOut: 0으로 감속 완화
easeInOut: 전반 0에서 가속 0으로 감속
매개변수 설명:
t: 현재 시간
b: 초기값
c: 변화량
d: 기간
호출 방법:
var 타이머 = null;
var b=0 ,c=400,d=100,t=0;
var drag = $("drag");
function run() {
drag.style.left = Math.ceil( Tween.Circ .easeInOut(t,b,c,d)) "px";
if(t t ;
}else{
clearInterval(timer);
}
}
var 타이머 = setInterval(run, 20)