topical media & game development

talk show tell print

lib-as-com-asinmotion-easing-Elastic.ax

lib-as-com-asinmotion-easing-Elastic.ax (swf ) [ flash ] flex


  package com.asinmotion.easing{
          public class @ax-lib-as-com-asinmotion-easing-Elastic {
                  public static function easeIn (t:Number, b:Number, c:Number, d:Number, a:Number = NaN, p:Number = NaN):Number {
                          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;
                  }
                  public static function easeOut (t:Number, b:Number, c:Number, d:Number, a:Number = NaN, p:Number = NaN):Number {
                          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);
                  }
                  public static function easeInOut (t:Number, b:Number, c:Number, d:Number, a:Number = NaN, p:Number = NaN):Number {
                          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; 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;
                  }
          }
  }
  


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.