Skip to content

Commit 69b3dc7

Browse files
李钿李钿
authored andcommitted
添加 tween 动画函数库
1 parent 79f576c commit 69b3dc7

File tree

1 file changed

+254
-0
lines changed

1 file changed

+254
-0
lines changed

src/components/tween.js

Lines changed: 254 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,254 @@
1+
'use strict';
2+
/**
3+
* t: current time(当前时间);
4+
* b: beginning value(初始值);
5+
* c: change in value(变化量);
6+
* _c: final value (最后值)
7+
* d: duration(持续时间)。
8+
*/
9+
var tweenFunctions = {
10+
linear: function(t, b, _c, d) {
11+
var c = _c - b;
12+
return c * t / d + b;
13+
},
14+
easeInQuad: function(t, b, _c, d) {
15+
var c = _c - b;
16+
return c * (t /= d) * t + b;
17+
},
18+
easeOutQuad: function(t, b, _c, d) {
19+
var c = _c - b;
20+
return -c * (t /= d) * (t - 2) + b;
21+
},
22+
easeInOutQuad: function(t, b, _c, d) {
23+
var c = _c - b;
24+
if ((t /= d / 2) < 1) {
25+
return c / 2 * t * t + b;
26+
} else {
27+
return -c / 2 * ((--t) * (t - 2) - 1) + b;
28+
}
29+
},
30+
easeInCubic: function(t, b, _c, d) {
31+
var c = _c - b;
32+
return c * (t /= d) * t * t + b;
33+
},
34+
easeOutCubic: function(t, b, _c, d) {
35+
var c = _c - b;
36+
return c * ((t = t / d - 1) * t * t + 1) + b;
37+
},
38+
easeInOutCubic: function(t, b, _c, d) {
39+
var c = _c - b;
40+
if ((t /= d / 2) < 1) {
41+
return c / 2 * t * t * t + b;
42+
} else {
43+
return c / 2 * ((t -= 2) * t * t + 2) + b;
44+
}
45+
},
46+
easeInQuart: function(t, b, _c, d) {
47+
var c = _c - b;
48+
return c * (t /= d) * t * t * t + b;
49+
},
50+
easeOutQuart: function(t, b, _c, d) {
51+
var c = _c - b;
52+
return -c * ((t = t / d - 1) * t * t * t - 1) + b;
53+
},
54+
easeInOutQuart: function(t, b, _c, d) {
55+
var c = _c - b;
56+
if ((t /= d / 2) < 1) {
57+
return c / 2 * t * t * t * t + b;
58+
} else {
59+
return -c / 2 * ((t -= 2) * t * t * t - 2) + b;
60+
}
61+
},
62+
easeInQuint: function(t, b, _c, d) {
63+
var c = _c - b;
64+
return c * (t /= d) * t * t * t * t + b;
65+
},
66+
easeOutQuint: function(t, b, _c, d) {
67+
var c = _c - b;
68+
return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
69+
},
70+
easeInOutQuint: function(t, b, _c, d) {
71+
var c = _c - b;
72+
if ((t /= d / 2) < 1) {
73+
return c / 2 * t * t * t * t * t + b;
74+
} else {
75+
return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;
76+
}
77+
},
78+
easeInSine: function(t, b, _c, d) {
79+
var c = _c - b;
80+
return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;
81+
},
82+
easeOutSine: function(t, b, _c, d) {
83+
var c = _c - b;
84+
return c * Math.sin(t / d * (Math.PI / 2)) + b;
85+
},
86+
easeInOutSine: function(t, b, _c, d) {
87+
var c = _c - b;
88+
return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
89+
},
90+
easeInExpo: function(t, b, _c, d) {
91+
var c = _c - b;
92+
return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
93+
},
94+
easeOutExpo: function(t, b, _c, d) {
95+
var c = _c - b;
96+
return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
97+
},
98+
easeInOutExpo: function(t, b, _c, d) {
99+
var c = _c - b;
100+
if (t === 0) {
101+
return b;
102+
}
103+
if (t === d) {
104+
return b + c;
105+
}
106+
if ((t /= d / 2) < 1) {
107+
return c / 2 * Math.pow(2, 10 * (t - 1)) + b;
108+
} else {
109+
return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;
110+
}
111+
},
112+
easeInCirc: function(t, b, _c, d) {
113+
var c = _c - b;
114+
return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;
115+
},
116+
easeOutCirc: function(t, b, _c, d) {
117+
var c = _c - b;
118+
return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;
119+
},
120+
easeInOutCirc: function(t, b, _c, d) {
121+
var c = _c - b;
122+
if ((t /= d / 2) < 1) {
123+
return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;
124+
} else {
125+
return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;
126+
}
127+
},
128+
easeInElastic: function(t, b, _c, d) {
129+
var c = _c - b;
130+
var a, p, s;
131+
s = 1.70158;
132+
p = 0;
133+
a = c;
134+
if (t === 0) {
135+
return b;
136+
} else if ((t /= d) === 1) {
137+
return b + c;
138+
}
139+
if (!p) {
140+
p = d * 0.3;
141+
}
142+
if (a < Math.abs(c)) {
143+
a = c;
144+
s = p / 4;
145+
} else {
146+
s = p / (2 * Math.PI) * Math.asin(c / a);
147+
}
148+
return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
149+
},
150+
easeOutElastic: function(t, b, _c, d) {
151+
var c = _c - b;
152+
var a, p, s;
153+
s = 1.70158;
154+
p = 0;
155+
a = c;
156+
if (t === 0) {
157+
return b;
158+
} else if ((t /= d) === 1) {
159+
return b + c;
160+
}
161+
if (!p) {
162+
p = d * 0.3;
163+
}
164+
if (a < Math.abs(c)) {
165+
a = c;
166+
s = p / 4;
167+
} else {
168+
s = p / (2 * Math.PI) * Math.asin(c / a);
169+
}
170+
return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;
171+
},
172+
easeInOutElastic: function(t, b, _c, d) {
173+
var c = _c - b;
174+
var a, p, s;
175+
s = 1.70158;
176+
p = 0;
177+
a = c;
178+
if (t === 0) {
179+
return b;
180+
} else if ((t /= d / 2) === 2) {
181+
return b + c;
182+
}
183+
if (!p) {
184+
p = d * (0.3 * 1.5);
185+
}
186+
if (a < Math.abs(c)) {
187+
a = c;
188+
s = p / 4;
189+
} else {
190+
s = p / (2 * Math.PI) * Math.asin(c / a);
191+
}
192+
if (t < 1) {
193+
return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
194+
} else {
195+
return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * 0.5 + c + b;
196+
}
197+
},
198+
easeInBack: function(t, b, _c, d, s) {
199+
var c = _c - b;
200+
if (s === void 0) {
201+
s = 1.70158;
202+
}
203+
return c * (t /= d) * t * ((s + 1) * t - s) + b;
204+
},
205+
easeOutBack: function(t, b, _c, d, s) {
206+
var c = _c - b;
207+
if (s === void 0) {
208+
s = 1.70158;
209+
}
210+
return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
211+
},
212+
easeInOutBack: function(t, b, _c, d, s) {
213+
var c = _c - b;
214+
if (s === void 0) {
215+
s = 1.70158;
216+
}
217+
if ((t /= d / 2) < 1) {
218+
return c / 2 * (t * t * (((s *= 1.525) + 1) * t - s)) + b;
219+
} else {
220+
return c / 2 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;
221+
}
222+
},
223+
easeInBounce: function(t, b, _c, d) {
224+
var c = _c - b;
225+
var v;
226+
v = tweenFunctions.easeOutBounce(d - t, 0, c, d);
227+
return c - v + b;
228+
},
229+
easeOutBounce: function(t, b, _c, d) {
230+
var c = _c - b;
231+
if ((t /= d) < 1 / 2.75) {
232+
return c * (7.5625 * t * t) + b;
233+
} else if (t < 2 / 2.75) {
234+
return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;
235+
} else if (t < 2.5 / 2.75) {
236+
return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;
237+
} else {
238+
return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;
239+
}
240+
},
241+
easeInOutBounce: function(t, b, _c, d) {
242+
var c = _c - b;
243+
var v;
244+
if (t < d / 2) {
245+
v = tweenFunctions.easeInBounce(t * 2, 0, c, d);
246+
return v * 0.5 + b;
247+
} else {
248+
v = tweenFunctions.easeOutBounce(t * 2 - d, 0, c, d);
249+
return v * 0.5 + c * 0.5 + b;
250+
}
251+
}
252+
};
253+
254+
module.exports = tweenFunctions;

0 commit comments

Comments
 (0)