我正在研究一个在java应用程序中使用的jquery缓动函数,并以此结束:
// t: current time, b: begInnIng value, c: change In value, d: duration
float easeInOutQuad (float x, float t, float b, float c, float d) {
if ((t/=d/2) < 1) return c/2*t*t + b;
return -c/2 * ((--t)*(t-2) - 1) + b;
}
有人可以教我如何将其插入我的动画球体运动中吗?
编辑:我不会在这里放置描述我的球体运动的不必要的代码。想象一个球体,X位置命名为X,使用此缓动功能将从0到1000。我该如何提供这个功能?答案 0 :(得分:4)
这基本上是psuedo-java代码,但我测试了它并且它有效。我画了一个小圆圈而不是使用球体:
Sphere sphere = new Sphere();
// you might want these to be in the sphere class
float begin;
float change;
float time;
long start;
float duration;
float destX = 200;
// setup, do this when you want to start the animation
void init(){
begin = sphere.x;
change = destX - begin;
time = 0;
start = System.currentTimeMillis();
duration = 1000;
}
// loop code, may also be where you render the sphere
void loop(){
if (time <= duration){
sphere.x = easeInOutQuad(time, begin, change, duration);
}else{
// animation is over, stop the loop
}
time = System.currentTimeMillis() - start;
sphere.render();
}
float easeInOutQuad (float t, float b, float c, float d) {
if ((t/=d/2) < 1) return c/2*t*t + b;
return -c/2 * ((--t)*(t-2) - 1) + b;
}
class Sphere{
float x = 0;
void render(){
ellipse(x, 100, 10, 10);
}
}
你可能希望根据你的设置移动一些东西,但这就是你如何使用这种缓和方程式。