Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///@description easings(function,start,change,duration,time);
- ///easings(function,start,change,duration,time);
- ///@param function
- ///@param start
- ///@param change
- ///@param duration
- ///@param time
- //Credits: Code lifted from http://www.davetech.co.uk/gamemakereasingandtweeningfunctions and http://gizma.com/easing/ but all the work to make it script compatible was done by Zen00 (Grant Brown).
- //t = time
- //b = start
- //c = change
- //d = duration
- //argument0 = time
- //argument1 = start
- //argument2 = change
- //argument3 = duration
- var function,start,change,duration,time;
- function = argument0;
- start = argument1;
- change = argument2;
- duration = argument3;
- time = argument4;
- switch(function)
- {
- case "linear":
- {
- return change*time/duration + start;
- }
- case "easeinquad":
- {
- time /= duration;
- return change*time*time + start;
- }
- case "easeoutquad":
- {
- time /= duration;
- return -change * time *(time-2) + start;
- }
- case "easeinoutquad":
- {
- time /= duration/2;
- if (time < 1)
- return change/2*time*time + start;
- time--;
- return -change/2 * (time*(time-2) - 1) + start;
- }
- case "easeincubic":
- {
- time /= duration;
- return change*time*time*time + start;
- }
- case "easeoutcubic":
- {
- time /= duration;
- time--;
- return change*(time*time*time + 1) + start;
- }
- case "easeinoutcubic":
- {
- time /= duration/2;
- if (time < 1)
- return change/2*time*time*time + start;
- time -= 2;
- return change/2*(time*time*time + 2) + start;
- }
- case "easeinquart":
- {
- time /= duration;
- return change*time*time*time*time + start;
- }
- case "easeoutquart":
- {
- time /= duration;
- time--;
- return -change * (time*time*time*time - 1) + start;
- }
- case "easeinoutquart":
- {
- time /= duration/2;
- if (time < 1)
- return change/2*time*time*time*time + start;
- time -= 2;
- return -change/2 * (time*time*time*time - 2) + start;
- }
- case "easeinquint":
- {
- time /= duration;
- return change*time*time*time*time*time + start;
- }
- case "easeoutquint":
- {
- time /= duration;
- time--;
- return change*(time*time*time*time*time + 1) + start;
- }
- case "easeinoutquint":
- {
- time /= duration/2;
- if (time < 1)
- return change/2*time*time*time*time*time + start;
- time -= 2;
- return change/2*(time*time*time*time*time + 2) + start;
- }
- case "easeinsine":
- {
- return -change * cos(time/duration * (pi/2)) + change + start;
- }
- case "easeoutsine":
- {
- return change * sin(time/duration * (pi/2)) + start;
- }
- case "easeinoutsine":
- {
- return -change/2 * (cos(pi*time/duration) - 1) + start;
- }
- case "easeinexpo":
- {
- return change * power( 2, 10 * (time/duration - 1) ) + start;
- }
- case "easeoutexpo":
- {
- return change * ( -power( 2, -10 * time/duration ) + 1 ) + start;
- }
- case "easeinoutexpo":
- {
- time /= duration/2;
- if (time < 1)
- return change/2 * power( 2, 10 * (time - 1) ) + start;
- time--;
- return change/2 * ( -power( 2, -10 * time) + 2 ) + start;
- }
- case "easeincirc":
- {
- time /= duration;
- return -change * (sqrt(1 - time*time) - 1) + start;
- }
- case "easeoutcirc":
- {
- time /= duration;
- time--;
- return change * sqrt(1 - time*time) + start;
- }
- case "easeinoutcirc":
- {
- time /= duration/2;
- if (time < 1)
- return -change/2 * (sqrt(1 - time*time) - 1) + start;
- time -= 2;
- return change/2 * (sqrt(1 - time*time) + 1) + start;
- }
- //I should point out that from this point I consider the easing to be "Expert" functions
- case "easeinelastic":
- {
- var _s = 1.70158;
- var _p = 0;
- var _a = change;
- if(time == 0 || _a == 0)
- return start;
- time /= duration;
- if(time == 1)
- return start+change;
- if(_p == 0)
- _p = duration*0.3;
- if(_a < abs(change))
- {
- _a = change;
- _s = _p*0.25;
- }
- else
- {
- _s = _p / (2 * pi) * arcsin (change / _a);
- }
- return -(_a * power(2,10 * (--time)) * sin((time * duration - _s) * (2 * pi) / _p)) + start;
- }
- case "easeoutelastic":
- {
- var _s = 1.70158;
- var _p = 0;
- var _a = change;
- if (time == 0 || _a == 0)
- return start;
- time /= duration;
- if (time == 1)
- return start + change;
- if (_p == 0)
- _p = duration * 0.3;
- if (_a < abs(change))
- {
- _a = change;
- _s = _p * 0.25;
- }
- else
- {
- _s = _p / (2 * pi) * arcsin (change / _a);
- }
- return _a * power(2, -10 * time) * sin((time * duration - _s) * (2 * pi) / _p ) + change + start;
- }
- case "easeinoutelastic":
- {
- var _s = 1.70158;
- var _p = 0;
- var _a = change;
- if (time == 0 || _a == 0)
- return start;
- time /= duration*0.5;
- if (time == 2)
- return start+change;
- if (_p == 0)
- _p = duration * (0.3 * 1.5);
- if (_a < abs(change))
- {
- _a = change;
- _s = _p * 0.25;
- }
- else
- {
- _s = _p / (2 * pi) * arcsin (change / _a);
- }
- if (time < 1)
- return -0.5 * (_a * power(2, 10 * (--time)) * sin((time * duration - _s) * (2 * pi) / _p)) + start;
- return _a * power(2, -10 * (--time)) * sin((time * duration - _s) * (2 * pi) / _p) * 0.5 + change + start;
- }
- case "easeinback":
- {
- var _s = 1.70158;
- time /= duration;
- return change * time * time * ((_s + 1) * time - _s) + start;
- }
- case "easeoutback":
- {
- var _s = 1.70158;
- time = time/duration - 1;
- return change * (time * time * ((_s + 1) * time + _s) + 1) + start;
- }
- case "easeinoutback":
- {
- var _s = 1.70158;
- time = time/duration*2
- if (time < 1)
- {
- _s *= 1.525;
- return change * 0.5 * (time * time * ((_s + 1) * time - _s)) + start;
- }
- time -= 2;
- _s *= 1.525
- return change * 0.5 * (time * time * ((_s + 1) * time + _s) + 2) + start;
- }
- case "easeinbounce":
- {
- return change - scr_easing("easeoutbounce",0,change,duration,(duration - time)) + start;
- }
- case "easeoutbounce":
- {
- time /= duration;
- if (time < 1/2.75)
- {
- return change * 7.5625 * time * time + start;
- }
- else if (time < 2/2.75)
- {
- time -= 1.5/2.75;
- return change * (7.5625 * time * time + 0.75) + start;
- }
- else if (time < 2.5/2.75)
- {
- time -= 2.25/2.75;
- return change * (7.5625 * time * time + 0.9375) + start;
- }
- else
- {
- time -= 2.625/2.75;
- return change * (7.5625 * time * time + 0.984375) + start;
- }
- }
- case "easeinoutbounce":
- {
- if (time < duration*0.5)
- {
- return (scr_easing("easeinbounce",0,change,duration,time*2)*0.5 + start);
- }
- return (scr_easing("easeoutbounce",0,change,duration,time*2 - duration)*0.5 + change*0.5 + start);
- }
- default:
- return "418";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement