ext-base-anim-extra.js
上传用户:dawnssy
上传日期:2022-08-06
资源大小:9345k
文件大小:9k
源码类别:

JavaScript

开发平台:

JavaScript

  1. /*!  * Ext JS Library 3.1.0  * Copyright(c) 2006-2009 Ext JS, LLC  * licensing@extjs.com  * http://www.extjs.com/license  */ // Easing functions
  2. (function(){
  3. // shortcuts to aid compression
  4. var abs = Math.abs,
  5.   pi = Math.PI,
  6.   asin = Math.asin,
  7.   pow = Math.pow,
  8.   sin = Math.sin,
  9. EXTLIB = Ext.lib;
  10.  
  11.     Ext.apply(EXTLIB.Easing, {
  12.         
  13.         easeBoth: function (t, b, c, d) {
  14.         return ((t /= d / 2) < 1)  ?  c / 2 * t * t + b  :  -c / 2 * ((--t) * (t - 2) - 1) + b;               
  15.         },
  16.         
  17.         easeInStrong: function (t, b, c, d) {
  18.             return c * (t /= d) * t * t * t + b;
  19.         },
  20.         easeOutStrong: function (t, b, c, d) {
  21.             return -c * ((t = t / d - 1) * t * t * t - 1) + b;
  22.         },
  23.         easeBothStrong: function (t, b, c, d) {
  24.             return ((t /= d / 2) < 1)  ?  c / 2 * t * t * t * t + b  :  -c / 2 * ((t -= 2) * t * t * t - 2) + b;
  25.         },
  26.         elasticIn: function (t, b, c, d, a, p) {
  27.         if (t == 0 || (t /= d) == 1) {
  28.                 return t == 0 ? b : b + c;
  29.             }             
  30.             p = p || (d * .3);             
  31. var s;
  32. if (a >= abs(c)) {
  33. s = p / (2 * pi) * asin(c / a);
  34. } else {
  35. a = c;
  36. s = p / 4;
  37. }
  38.             return -(a * pow(2, 10 * (t -= 1)) * sin((t * d - s) * (2 * pi) / p)) + b;
  39.                    
  40.         }, 
  41. elasticOut: function (t, b, c, d, a, p) {
  42.         if (t == 0 || (t /= d) == 1) {
  43.                 return t == 0 ? b : b + c;
  44.             }             
  45.             p = p || (d * .3);             
  46. var s;
  47. if (a >= abs(c)) {
  48. s = p / (2 * pi) * asin(c / a);
  49. } else {
  50. a = c;
  51. s = p / 4;
  52. }
  53.             return a * pow(2, -10 * t) * sin((t * d - s) * (2 * pi) / p) + c + b;  
  54.         }, 
  55.         elasticBoth: function (t, b, c, d, a, p) {
  56.             if (t == 0 || (t /= d / 2) == 2) {
  57.                 return t == 0 ? b : b + c;
  58.             }          
  59.             
  60.             p = p || (d * (.3 * 1.5));              
  61.             var s;
  62.             if (a >= abs(c)) {
  63.             s = p / (2 * pi) * asin(c / a);
  64.             } else {
  65.             a = c;
  66.                 s = p / 4;
  67.             }
  68.             return t < 1 ?
  69.                  -.5 * (a * pow(2, 10 * (t -= 1)) * sin((t * d - s) * (2 * pi) / p)) + b :
  70.                     a * pow(2, -10 * (t -= 1)) * sin((t * d - s) * (2 * pi) / p) * .5 + c + b;
  71.         },
  72.         backIn: function (t, b, c, d, s) {
  73.             s = s ||  1.70158;              
  74.             return c * (t /= d) * t * ((s + 1) * t - s) + b;
  75.         },
  76.         backOut: function (t, b, c, d, s) {
  77.             if (!s) {
  78.                 s = 1.70158;
  79.             }
  80.             return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
  81.         },
  82.         backBoth: function (t, b, c, d, s) {
  83.             s = s || 1.70158;              
  84.             return ((t /= d / 2 ) < 1) ?
  85.                     c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b :              
  86.              c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;
  87.         },
  88.         bounceIn: function (t, b, c, d) {
  89.             return c - EXTLIB.Easing.bounceOut(d - t, 0, c, d) + b;
  90.         },
  91.         bounceOut: function (t, b, c, d) {
  92.         if ((t /= d) < (1 / 2.75)) {
  93.                 return c * (7.5625 * t * t) + b;
  94.             } else if (t < (2 / 2.75)) {
  95.                 return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b;
  96.             } else if (t < (2.5 / 2.75)) {
  97.                 return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b;
  98.             }
  99.             return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b;
  100.         },
  101.         bounceBoth: function (t, b, c, d) {
  102.             return (t < d / 2) ?
  103.                    EXTLIB.Easing.bounceIn(t * 2, 0, c, d) * .5 + b : 
  104.                 EXTLIB.Easing.bounceOut(t * 2 - d, 0, c, d) * .5 + c * .5 + b;
  105.         }
  106.     });
  107. })();
  108. (function() {
  109.     var EXTLIB = Ext.lib;
  110. // Color Animation
  111. EXTLIB.Anim.color = function(el, args, duration, easing, cb, scope) {
  112.     return EXTLIB.Anim.run(el, args, duration, easing, cb, scope, EXTLIB.ColorAnim);
  113. }
  114.     EXTLIB.ColorAnim = function(el, attributes, duration, method) {
  115.         EXTLIB.ColorAnim.superclass.constructor.call(this, el, attributes, duration, method);
  116.     };
  117.     Ext.extend(EXTLIB.ColorAnim, EXTLIB.AnimBase);
  118.     var superclass = EXTLIB.ColorAnim.superclass,
  119.      colorRE = /color$/i,
  120.      transparentRE = /^transparent|rgba(0, 0, 0, 0)$/,
  121.         rgbRE = /^rgb(([0-9]+)s*,s*([0-9]+)s*,s*([0-9]+))$/i,
  122.         hexRE= /^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,
  123.         hex3RE = /^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i,
  124.         isset = function(v){
  125.             return typeof v !== 'undefined';
  126.         }
  127.          
  128.     // private
  129.     function parseColor(s) {
  130.         var pi = parseInt,
  131.             base,
  132.             out = null,
  133.             c;
  134.         
  135.     if (s.length == 3) {
  136.             return s;
  137.         }
  138.         Ext.each([hexRE, rgbRE, hex3RE], function(re, idx){
  139.             base = (idx % 2 == 0) ? 16 : 10;
  140.             c = re.exec(s);
  141.             if(c && c.length == 4){
  142.                 out = [pi(c[1], base), pi(c[2], base), pi(c[3], base)];
  143.                 return false;
  144.             }
  145.         });
  146.         return out;
  147.     }
  148.     Ext.apply(EXTLIB.ColorAnim.prototype, {
  149.         getAttr : function(attr) {
  150.             var me = this,
  151.                 el = me.el,
  152.                 val;                
  153.             if(colorRE.test(attr)){
  154.                 while(el && transparentRE.test(val = Ext.fly(el).getStyle(attr))){
  155.                     el = el.parentNode;
  156.                     val = "fff";
  157.                 }
  158.             }else{
  159.                 val = superclass.getAttr.call(me, attr);
  160.             }
  161.             return val;
  162.         },
  163.         doMethod : function(attr, start, end) {
  164.             var me = this,
  165.              val,
  166.              floor = Math.floor,
  167. i, len = start.length, v;            
  168.             if(colorRE.test(attr)){
  169.                 val = [];
  170. for(i=0; i<len; i++) {
  171. v = start[i];
  172. val[i] = superclass.doMethod.call(me, attr, v, end[i]);
  173. }
  174.                 val = 'rgb(' + floor(val[0]) + ',' + floor(val[1]) + ',' + floor(val[2]) + ')';
  175.             }else{
  176.                 val = superclass.doMethod.call(me, attr, start, end);
  177.             }
  178.             return val;
  179.         },
  180.         setRunAttr : function(attr) {
  181.             var me = this,
  182.                 a = me.attributes[attr],
  183.                 to = a.to,
  184.                 by = a.by,
  185.                 ra;
  186.                 
  187.             superclass.setRunAttr.call(me, attr);
  188.             ra = me.runAttrs[attr];
  189.             if(colorRE.test(attr)){
  190.                 var start = parseColor(ra.start),
  191.                     end = parseColor(ra.end);
  192.                 if(!isset(to) && isset(by)){
  193.                     end = parseColor(by);
  194. for(var i=0,len=start.length; i<len; i++) {
  195. end[i] = start[i] + end[i];
  196. }
  197.                 }
  198.                 ra.start = start;
  199.                 ra.end = end;
  200.             }
  201.         }
  202. });
  203. })();
  204. (function() {
  205.     // Scroll Animation
  206.     var EXTLIB = Ext.lib;
  207. EXTLIB.Anim.scroll = function(el, args, duration, easing, cb, scope) {         
  208.     return EXTLIB.Anim.run(el, args, duration, easing, cb, scope, EXTLIB.Scroll);
  209. }
  210.     EXTLIB.Scroll = function(el, attributes, duration, method) {
  211.         if(el){
  212.             EXTLIB.Scroll.superclass.constructor.call(this, el, attributes, duration, method);
  213.         }
  214.     };
  215.     Ext.extend(EXTLIB.Scroll, EXTLIB.ColorAnim);
  216.     var superclass = EXTLIB.Scroll.superclass,
  217.      SCROLL = 'scroll';
  218.     Ext.apply(EXTLIB.Scroll.prototype, {
  219.         doMethod : function(attr, start, end) {
  220.             var val,
  221.              me = this,
  222.              curFrame = me.curFrame,
  223.              totalFrames = me.totalFrames;
  224.             if(attr == SCROLL){
  225.                 val = [me.method(curFrame, start[0], end[0] - start[0], totalFrames),
  226.                        me.method(curFrame, start[1], end[1] - start[1], totalFrames)];
  227.             }else{
  228.                 val = superclass.doMethod.call(me, attr, start, end);
  229.             }
  230.             return val;
  231.         },
  232.         getAttr : function(attr) {
  233.             var me = this;
  234.             if (attr == SCROLL) {
  235.                 return [me.el.scrollLeft, me.el.scrollTop];
  236.             }else{
  237.                 return superclass.getAttr.call(me, attr);
  238.             }
  239.         },
  240.         setAttr : function(attr, val, unit) {
  241.             var me = this;
  242.             if(attr == SCROLL){
  243.                 me.el.scrollLeft = val[0];
  244.                 me.el.scrollTop = val[1];
  245.             }else{
  246.                 superclass.setAttr.call(me, attr, val, unit);
  247.             }
  248.         }
  249.     });
  250. })();