1 | function ease_out_elastic(arg0, arg1, arg2, arg3) |
2 | { |
3 | var _s = 1.70158; |
4 | var _p = 0; |
5 | var time = arg0; |
6 | var start = arg1; |
7 | var change = arg2; |
8 | var duration = arg3; |
9 | if (time == 0 || change == 0) |
10 | return start; |
11 | time /= duration; |
12 | if (time == 1) |
13 | return start + arg2; |
14 | if (!_p) |
15 | _p = duration * 0.3; |
16 | if (change < abs(arg2)) |
17 | { |
18 | change = arg2; |
19 | _s = _p * 0.25; |
20 | } |
21 | else |
22 | { |
23 | _s = (_p / (2 * pi)) * arcsin(arg2 / change); |
24 | } |
25 | return (change * power(2, -10 * time) * sin((((time * duration) - _s) * (2 * pi)) / _p)) + arg2 + start; |
26 | } |