home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Diversos / Beez.swf / scripts / caurina / transitions / Equations.as < prev    next >
Encoding:
Text File  |  2008-09-03  |  16.1 KB  |  424 lines

  1. package caurina.transitions
  2. {
  3.    public class Equations
  4.    {
  5.        
  6.       
  7.       public function Equations()
  8.       {
  9.          super();
  10.          trace("Equations is a static class and should not be instantiated.");
  11.       }
  12.       
  13.       public static function easeOutBounce(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  14.       {
  15.          if((t = t / d) < 1 / 2.75)
  16.          {
  17.             return c * (7.5625 * t * t) + b;
  18.          }
  19.          if(t < 2 / 2.75)
  20.          {
  21.             return c * (7.5625 * (t = t - 1.5 / 2.75) * t + 0.75) + b;
  22.          }
  23.          if(t < 2.5 / 2.75)
  24.          {
  25.             return c * (7.5625 * (t = t - 2.25 / 2.75) * t + 0.9375) + b;
  26.          }
  27.          return c * (7.5625 * (t = t - 2.625 / 2.75) * t + 0.984375) + b;
  28.       }
  29.       
  30.       public static function easeInOutElastic(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  31.       {
  32.          var s:Number = NaN;
  33.          if(t == 0)
  34.          {
  35.             return b;
  36.          }
  37.          if((t = t / (d / 2)) == 2)
  38.          {
  39.             return b + c;
  40.          }
  41.          var p:Number = !Boolean(p_params) || isNaN(p_params.period) ? d * (0.3 * 1.5) : Number(p_params.period);
  42.          var a:Number = !Boolean(p_params) || isNaN(p_params.amplitude) ? 0 : Number(p_params.amplitude);
  43.          if(!Boolean(a) || a < Math.abs(c))
  44.          {
  45.             a = c;
  46.             s = p / 4;
  47.          }
  48.          else
  49.          {
  50.             s = p / (2 * Math.PI) * Math.asin(c / a);
  51.          }
  52.          if(t < 1)
  53.          {
  54.             return -0.5 * (a * Math.pow(2,10 * (t = t - 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
  55.          }
  56.          return a * Math.pow(2,-10 * (t = t - 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * 0.5 + c + b;
  57.       }
  58.       
  59.       public static function easeInOutQuad(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  60.       {
  61.          if((t = t / (d / 2)) < 1)
  62.          {
  63.             return c / 2 * t * t + b;
  64.          }
  65.          return -c / 2 * (--t * (t - 2) - 1) + b;
  66.       }
  67.       
  68.       public static function easeInOutBounce(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  69.       {
  70.          if(t < d / 2)
  71.          {
  72.             return easeInBounce(t * 2,0,c,d) * 0.5 + b;
  73.          }
  74.          return easeOutBounce(t * 2 - d,0,c,d) * 0.5 + c * 0.5 + b;
  75.       }
  76.       
  77.       public static function easeInOutBack(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  78.       {
  79.          var s:Number = !Boolean(p_params) || isNaN(p_params.overshoot) ? 1.70158 : Number(p_params.overshoot);
  80.          if((t = t / (d / 2)) < 1)
  81.          {
  82.             return c / 2 * (t * t * (((s = s * 1.525) + 1) * t - s)) + b;
  83.          }
  84.          return c / 2 * ((t = t - 2) * t * (((s = s * 1.525) + 1) * t + s) + 2) + b;
  85.       }
  86.       
  87.       public static function easeOutInCubic(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  88.       {
  89.          if(t < d / 2)
  90.          {
  91.             return easeOutCubic(t * 2,b,c / 2,d,p_params);
  92.          }
  93.          return easeInCubic(t * 2 - d,b + c / 2,c / 2,d,p_params);
  94.       }
  95.       
  96.       public static function easeNone(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  97.       {
  98.          return c * t / d + b;
  99.       }
  100.       
  101.       public static function easeOutBack(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  102.       {
  103.          var s:Number = !Boolean(p_params) || isNaN(p_params.overshoot) ? 1.70158 : Number(p_params.overshoot);
  104.          return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
  105.       }
  106.       
  107.       public static function easeInOutSine(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  108.       {
  109.          return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
  110.       }
  111.       
  112.       public static function easeInBack(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  113.       {
  114.          var s:Number = !Boolean(p_params) || isNaN(p_params.overshoot) ? 1.70158 : Number(p_params.overshoot);
  115.          return c * (t = t / d) * t * ((s + 1) * t - s) + b;
  116.       }
  117.       
  118.       public static function easeInQuart(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  119.       {
  120.          return c * (t = t / d) * t * t * t + b;
  121.       }
  122.       
  123.       public static function easeOutInQuint(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  124.       {
  125.          if(t < d / 2)
  126.          {
  127.             return easeOutQuint(t * 2,b,c / 2,d,p_params);
  128.          }
  129.          return easeInQuint(t * 2 - d,b + c / 2,c / 2,d,p_params);
  130.       }
  131.       
  132.       public static function easeOutInBounce(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  133.       {
  134.          if(t < d / 2)
  135.          {
  136.             return easeOutBounce(t * 2,b,c / 2,d,p_params);
  137.          }
  138.          return easeInBounce(t * 2 - d,b + c / 2,c / 2,d,p_params);
  139.       }
  140.       
  141.       public static function init() : void
  142.       {
  143.          Tweener.registerTransition("easenone",easeNone);
  144.          Tweener.registerTransition("linear",easeNone);
  145.          Tweener.registerTransition("easeinquad",easeInQuad);
  146.          Tweener.registerTransition("easeoutquad",easeOutQuad);
  147.          Tweener.registerTransition("easeinoutquad",easeInOutQuad);
  148.          Tweener.registerTransition("easeoutinquad",easeOutInQuad);
  149.          Tweener.registerTransition("easeincubic",easeInCubic);
  150.          Tweener.registerTransition("easeoutcubic",easeOutCubic);
  151.          Tweener.registerTransition("easeinoutcubic",easeInOutCubic);
  152.          Tweener.registerTransition("easeoutincubic",easeOutInCubic);
  153.          Tweener.registerTransition("easeinquart",easeInQuart);
  154.          Tweener.registerTransition("easeoutquart",easeOutQuart);
  155.          Tweener.registerTransition("easeinoutquart",easeInOutQuart);
  156.          Tweener.registerTransition("easeoutinquart",easeOutInQuart);
  157.          Tweener.registerTransition("easeinquint",easeInQuint);
  158.          Tweener.registerTransition("easeoutquint",easeOutQuint);
  159.          Tweener.registerTransition("easeinoutquint",easeInOutQuint);
  160.          Tweener.registerTransition("easeoutinquint",easeOutInQuint);
  161.          Tweener.registerTransition("easeinsine",easeInSine);
  162.          Tweener.registerTransition("easeoutsine",easeOutSine);
  163.          Tweener.registerTransition("easeinoutsine",easeInOutSine);
  164.          Tweener.registerTransition("easeoutinsine",easeOutInSine);
  165.          Tweener.registerTransition("easeincirc",easeInCirc);
  166.          Tweener.registerTransition("easeoutcirc",easeOutCirc);
  167.          Tweener.registerTransition("easeinoutcirc",easeInOutCirc);
  168.          Tweener.registerTransition("easeoutincirc",easeOutInCirc);
  169.          Tweener.registerTransition("easeinexpo",easeInExpo);
  170.          Tweener.registerTransition("easeoutexpo",easeOutExpo);
  171.          Tweener.registerTransition("easeinoutexpo",easeInOutExpo);
  172.          Tweener.registerTransition("easeoutinexpo",easeOutInExpo);
  173.          Tweener.registerTransition("easeinelastic",easeInElastic);
  174.          Tweener.registerTransition("easeoutelastic",easeOutElastic);
  175.          Tweener.registerTransition("easeinoutelastic",easeInOutElastic);
  176.          Tweener.registerTransition("easeoutinelastic",easeOutInElastic);
  177.          Tweener.registerTransition("easeinback",easeInBack);
  178.          Tweener.registerTransition("easeoutback",easeOutBack);
  179.          Tweener.registerTransition("easeinoutback",easeInOutBack);
  180.          Tweener.registerTransition("easeoutinback",easeOutInBack);
  181.          Tweener.registerTransition("easeinbounce",easeInBounce);
  182.          Tweener.registerTransition("easeoutbounce",easeOutBounce);
  183.          Tweener.registerTransition("easeinoutbounce",easeInOutBounce);
  184.          Tweener.registerTransition("easeoutinbounce",easeOutInBounce);
  185.       }
  186.       
  187.       public static function easeOutExpo(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  188.       {
  189.          return t == d ? b + c : c * 1.001 * (-Math.pow(2,-10 * t / d) + 1) + b;
  190.       }
  191.       
  192.       public static function easeOutInBack(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  193.       {
  194.          if(t < d / 2)
  195.          {
  196.             return easeOutBack(t * 2,b,c / 2,d,p_params);
  197.          }
  198.          return easeInBack(t * 2 - d,b + c / 2,c / 2,d,p_params);
  199.       }
  200.       
  201.       public static function easeInExpo(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  202.       {
  203.          return t == 0 ? b : c * Math.pow(2,10 * (t / d - 1)) + b - c * 0.001;
  204.       }
  205.       
  206.       public static function easeInCubic(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  207.       {
  208.          return c * (t = t / d) * t * t + b;
  209.       }
  210.       
  211.       public static function easeInQuint(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  212.       {
  213.          return c * (t = t / d) * t * t * t * t + b;
  214.       }
  215.       
  216.       public static function easeInOutCirc(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  217.       {
  218.          if((t = t / (d / 2)) < 1)
  219.          {
  220.             return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;
  221.          }
  222.          return c / 2 * (Math.sqrt(1 - (t = t - 2) * t) + 1) + b;
  223.       }
  224.       
  225.       public static function easeInQuad(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  226.       {
  227.          return c * (t = t / d) * t + b;
  228.       }
  229.       
  230.       public static function easeInBounce(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  231.       {
  232.          return c - easeOutBounce(d - t,0,c,d) + b;
  233.       }
  234.       
  235.       public static function easeOutInExpo(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  236.       {
  237.          if(t < d / 2)
  238.          {
  239.             return easeOutExpo(t * 2,b,c / 2,d,p_params);
  240.          }
  241.          return easeInExpo(t * 2 - d,b + c / 2,c / 2,d,p_params);
  242.       }
  243.       
  244.       public static function easeOutQuart(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  245.       {
  246.          return -c * ((t = t / d - 1) * t * t * t - 1) + b;
  247.       }
  248.       
  249.       public static function easeInSine(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  250.       {
  251.          return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;
  252.       }
  253.       
  254.       public static function easeInOutQuart(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  255.       {
  256.          if((t = t / (d / 2)) < 1)
  257.          {
  258.             return c / 2 * t * t * t * t + b;
  259.          }
  260.          return -c / 2 * ((t = t - 2) * t * t * t - 2) + b;
  261.       }
  262.       
  263.       public static function easeOutQuad(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  264.       {
  265.          return -c * (t = t / d) * (t - 2) + b;
  266.       }
  267.       
  268.       public static function easeOutInElastic(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  269.       {
  270.          if(t < d / 2)
  271.          {
  272.             return easeOutElastic(t * 2,b,c / 2,d,p_params);
  273.          }
  274.          return easeInElastic(t * 2 - d,b + c / 2,c / 2,d,p_params);
  275.       }
  276.       
  277.       public static function easeInElastic(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  278.       {
  279.          var s:Number = NaN;
  280.          if(t == 0)
  281.          {
  282.             return b;
  283.          }
  284.          if((t = t / d) == 1)
  285.          {
  286.             return b + c;
  287.          }
  288.          var p:Number = !Boolean(p_params) || isNaN(p_params.period) ? d * 0.3 : Number(p_params.period);
  289.          var a:Number = !Boolean(p_params) || isNaN(p_params.amplitude) ? 0 : Number(p_params.amplitude);
  290.          if(!Boolean(a) || a < Math.abs(c))
  291.          {
  292.             a = c;
  293.             s = p / 4;
  294.          }
  295.          else
  296.          {
  297.             s = p / (2 * Math.PI) * Math.asin(c / a);
  298.          }
  299.          return -(a * Math.pow(2,10 * (t = t - 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
  300.       }
  301.       
  302.       public static function easeOutCubic(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  303.       {
  304.          return c * ((t = t / d - 1) * t * t + 1) + b;
  305.       }
  306.       
  307.       public static function easeOutQuint(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  308.       {
  309.          return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
  310.       }
  311.       
  312.       public static function easeOutInQuad(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  313.       {
  314.          if(t < d / 2)
  315.          {
  316.             return easeOutQuad(t * 2,b,c / 2,d,p_params);
  317.          }
  318.          return easeInQuad(t * 2 - d,b + c / 2,c / 2,d,p_params);
  319.       }
  320.       
  321.       public static function easeOutSine(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  322.       {
  323.          return c * Math.sin(t / d * (Math.PI / 2)) + b;
  324.       }
  325.       
  326.       public static function easeInOutCubic(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  327.       {
  328.          if((t = t / (d / 2)) < 1)
  329.          {
  330.             return c / 2 * t * t * t + b;
  331.          }
  332.          return c / 2 * ((t = t - 2) * t * t + 2) + b;
  333.       }
  334.       
  335.       public static function easeInOutQuint(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  336.       {
  337.          if((t = t / (d / 2)) < 1)
  338.          {
  339.             return c / 2 * t * t * t * t * t + b;
  340.          }
  341.          return c / 2 * ((t = t - 2) * t * t * t * t + 2) + b;
  342.       }
  343.       
  344.       public static function easeInCirc(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  345.       {
  346.          return -c * (Math.sqrt(1 - (t = t / d) * t) - 1) + b;
  347.       }
  348.       
  349.       public static function easeOutInSine(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  350.       {
  351.          if(t < d / 2)
  352.          {
  353.             return easeOutSine(t * 2,b,c / 2,d,p_params);
  354.          }
  355.          return easeInSine(t * 2 - d,b + c / 2,c / 2,d,p_params);
  356.       }
  357.       
  358.       public static function easeInOutExpo(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  359.       {
  360.          if(t == 0)
  361.          {
  362.             return b;
  363.          }
  364.          if(t == d)
  365.          {
  366.             return b + c;
  367.          }
  368.          if((t = t / (d / 2)) < 1)
  369.          {
  370.             return c / 2 * Math.pow(2,10 * (t - 1)) + b - c * 0.0005;
  371.          }
  372.          return c / 2 * 1.0005 * (-Math.pow(2,-10 * --t) + 2) + b;
  373.       }
  374.       
  375.       public static function easeOutElastic(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  376.       {
  377.          var s:Number = NaN;
  378.          if(t == 0)
  379.          {
  380.             return b;
  381.          }
  382.          if((t = t / d) == 1)
  383.          {
  384.             return b + c;
  385.          }
  386.          var p:Number = !Boolean(p_params) || isNaN(p_params.period) ? d * 0.3 : Number(p_params.period);
  387.          var a:Number = !Boolean(p_params) || isNaN(p_params.amplitude) ? 0 : Number(p_params.amplitude);
  388.          if(!Boolean(a) || a < Math.abs(c))
  389.          {
  390.             a = c;
  391.             s = p / 4;
  392.          }
  393.          else
  394.          {
  395.             s = p / (2 * Math.PI) * Math.asin(c / a);
  396.          }
  397.          return a * Math.pow(2,-10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;
  398.       }
  399.       
  400.       public static function easeOutCirc(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  401.       {
  402.          return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;
  403.       }
  404.       
  405.       public static function easeOutInQuart(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  406.       {
  407.          if(t < d / 2)
  408.          {
  409.             return easeOutQuart(t * 2,b,c / 2,d,p_params);
  410.          }
  411.          return easeInQuart(t * 2 - d,b + c / 2,c / 2,d,p_params);
  412.       }
  413.       
  414.       public static function easeOutInCirc(t:Number, b:Number, c:Number, d:Number, p_params:Object = null) : Number
  415.       {
  416.          if(t < d / 2)
  417.          {
  418.             return easeOutCirc(t * 2,b,c / 2,d,p_params);
  419.          }
  420.          return easeInCirc(t * 2 - d,b + c / 2,c / 2,d,p_params);
  421.       }
  422.    }
  423. }
  424.