| author | Samuel Huron <samuel.huron@centrepompidou.fr> |
| Fri, 18 Feb 2011 19:37:15 +0100 | |
| changeset 50 | a1636b31eb98 |
| permissions | -rw-r--r-- |
|
50
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
1 |
/** |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
2 |
* Interface Elements for jQuery |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
3 |
* Easing formulas |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
4 |
* |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
5 |
* http://interface.eyecon.ro |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
6 |
* |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
7 |
* Copyright (c) 2006 Stefan Petre |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
8 |
* Dual licensed under the MIT (MIT-LICENSE.txt) |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
9 |
* and GPL (GPL-LICENSE.txt) licenses. |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
10 |
*/ |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
11 |
|
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
12 |
/** |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
13 |
* Starting with jQuery 1.1 the fx function accepts easing formulas that can be used with .animation() and most of FX plugins from Interface. The object can be extended to accept new easing formulas |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
14 |
*/ |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
15 |
|
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
16 |
jQuery.extend({ |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
17 |
/** |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
18 |
* |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
19 |
* @param Integer p period step in animation |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
20 |
* @param Integer n current time |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
21 |
* @param Mixed firstNum begin value |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
22 |
* @param Mixed delta change in |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
23 |
* @param Integer duration duration |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
24 |
*/ |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
25 |
easing : { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
26 |
linear: function(p, n, firstNum, delta, duration) { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
27 |
return ((-Math.cos(p*Math.PI)/2) + 0.5) * delta + firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
28 |
}, |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
29 |
|
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
30 |
easein: function(p, n, firstNum, delta, duration) { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
31 |
return delta*(n/=duration)*n*n + firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
32 |
}, |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
33 |
|
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
34 |
easeout: function(p, n, firstNum, delta, duration) { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
35 |
return -delta * ((n=n/duration-1)*n*n*n - 1) + firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
36 |
}, |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
37 |
|
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
38 |
easeboth: function(p, n, firstNum, delta, duration) { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
39 |
if ((n/=duration/2) < 1) |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
40 |
return delta/2*n*n*n*n + firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
41 |
return -delta/2 * ((n-=2)*n*n*n - 2) + firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
42 |
}, |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
43 |
|
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
44 |
bounceout: function(p, n, firstNum, delta, duration) { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
45 |
if ((n/=duration) < (1/2.75)) { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
46 |
return delta*(7.5625*n*n) + firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
47 |
} else if (n < (2/2.75)) { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
48 |
return delta*(7.5625*(n-=(1.5/2.75))*n + .75) + firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
49 |
} else if (n < (2.5/2.75)) { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
50 |
return delta*(7.5625*(n-=(2.25/2.75))*n + .9375) + firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
51 |
} else { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
52 |
return delta*(7.5625*(n-=(2.625/2.75))*n + .984375) + firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
53 |
} |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
54 |
}, |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
55 |
|
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
56 |
bouncein: function(p, n, firstNum, delta, duration) { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
57 |
if (jQuery.easing.bounceout) |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
58 |
return delta - jQuery.easing.bounceout (p, duration - n, 0, delta, duration) + firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
59 |
return firstNum + delta; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
60 |
}, |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
61 |
|
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
62 |
bounceboth: function(p, n, firstNum, delta, duration) { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
63 |
if (jQuery.easing.bouncein && jQuery.easing.bounceout) |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
64 |
if (n < duration/2) |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
65 |
return jQuery.easing.bouncein(p, n*2, 0, delta, duration) * .5 + firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
66 |
return jQuery.easing.bounceout(p, n*2-duration, 0, delta, duration) * .5 + delta*.5 + firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
67 |
return firstNum + delta; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
68 |
}, |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
69 |
|
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
70 |
elasticin: function(p, n, firstNum, delta, duration) { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
71 |
var a, s; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
72 |
if (n == 0) |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
73 |
return firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
74 |
if ((n/=duration)==1) |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
75 |
return firstNum+delta; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
76 |
a = delta * 0.3; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
77 |
p=duration*.3; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
78 |
if (a < Math.abs(delta)) { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
79 |
a=delta; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
80 |
s=p/4; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
81 |
} else { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
82 |
s = p/(2*Math.PI) * Math.asin (delta/a); |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
83 |
} |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
84 |
return -(a*Math.pow(2,10*(n-=1)) * Math.sin( (n*duration-s)*(2*Math.PI)/p )) + firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
85 |
}, |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
86 |
|
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
87 |
elasticout:function(p, n, firstNum, delta, duration) { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
88 |
var a, s; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
89 |
if (n==0) |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
90 |
return firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
91 |
if ((n/=duration/2)==2) |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
92 |
return firstNum + delta; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
93 |
a = delta * 0.3; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
94 |
p=duration*.3; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
95 |
if (a < Math.abs(delta)){ |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
96 |
a = delta; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
97 |
s=p/4; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
98 |
} else { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
99 |
s = p/(2*Math.PI) * Math.asin (delta/a); |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
100 |
} |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
101 |
return a*Math.pow(2,-10*n) * Math.sin( (n*duration-s)*(2*Math.PI)/p ) + delta + firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
102 |
}, |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
103 |
|
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
104 |
elasticboth: function(p, n, firstNum, delta, duration) { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
105 |
var a, s; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
106 |
if (n==0) |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
107 |
return firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
108 |
if ((n/=duration/2)==2) |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
109 |
return firstNum + delta; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
110 |
a = delta * 0.3; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
111 |
p=duration*.3; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
112 |
if (a < Math.abs(delta)){ |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
113 |
a = delta; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
114 |
s=p/4; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
115 |
} else { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
116 |
s = p/(2*Math.PI) * Math.asin (delta/a); |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
117 |
} |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
118 |
if (n < 1) { |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
119 |
return -.5*(a*Math.pow(2,10*(n-=1)) * Math.sin( (n*duration-s)*(2*Math.PI)/p )) + firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
120 |
} |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
121 |
return a*Math.pow(2,-10*(n-=1)) * Math.sin( (n*duration-s)*(2*Math.PI)/p )*.5 + delta + firstNum; |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
122 |
} |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
123 |
} |
|
a1636b31eb98
polemical timeline
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
124 |
}); |