00001 class tweens.robertpenner.easing.Elastic {
00002 static function easeIn (t:Number, b:Number, c:Number, d:Number, a:Number, p:Number):Number {
00003 if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
00004 if (!a || a < Math.abs(c)) { a=c; var s=p/4; }
00005 else var s = p/(2*Math.PI) * Math.asin (c/a);
00006 return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
00007 }
00008 static function easeOut (t:Number, b:Number, c:Number, d:Number, a:Number, p:Number):Number {
00009 if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
00010 if (!a || a < Math.abs(c)) { a=c; var s=p/4; }
00011 else var s = p/(2*Math.PI) * Math.asin (c/a);
00012 return (a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b);
00013 }
00014 static function easeInOut (t:Number, b:Number, c:Number, d:Number, a:Number, p:Number):Number {
00015 if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
00016 if (!a || a < Math.abs(c)) { a=c; var s=p/4; }
00017 else var s = p/(2*Math.PI) * Math.asin (c/a);
00018 if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
00019 return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
00020 }
00021 static function easeOutIn (t:Number, b:Number, c:Number, d:Number, a:Number, p:Number):Number {
00022 if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
00023 if (!a ||a < Math.abs(c)) {a=c; var s=p/4;}
00024 else var s = p/(2*Math.PI) * Math.asin (c/a);
00025 if (t < 1) return .5*(a*Math.pow(2,-10*t) * Math.sin((t*d-s)*(2*Math.PI)/p))+c/2+b;
00026 return c/2 +.5*(a*Math.pow(2,10*(t-2)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
00027
00028 }
00029 }
00030