使用Penner的缓动方程减少整数

时间:2014-04-15 19:10:59

标签: javascript easing equation-solving easing-functions

我正在制作一款必须在一段时间内回答问题的游戏。随着分数的增加,那个时间会减少。我正在使用这个功能。

var getTime = function(score){
  var maxTime = 5000,
      minTime = 750;
  var reducedTime = maxTime * ( 1 - ( score * .1 ) );
  return Math.max( reducedTime, minTime );
}

在这里看一个小提琴 - http://jsfiddle.net/QWV82/

我想改变我的功能,以便缩短时间。我希望使用Robert Penners easing equations之一。

    // t: current time, b: begInnIng value, c: change In value, d: duration
easeOutQuint: function (x, t, b, c, d) {
    return c*((t=t/d-1)*t*t*t*t + 1) + b;
}

我不确定是否可以将我的系统应用于他的方程式。我无法弄清楚我应该传递给函数的是什么。

这可能吗?我需要做的解释很棒。

1 个答案:

答案 0 :(得分:1)

您应该可以像这样使用easeOutQuint()(您需要maxScore常量,如图所示):

var getTime = function(score){
  var maxTime = 5000,
      minTime = 750,
      maxScore = 100;
  return maxTime + minTime - easeOutQuint(null, score, minTime, maxTime-minTime, maxScore);
}

我们从minTime和MaxTime的总和中减去,因为您说您希望输出值向下倾斜。因此,这样返回的值将从maxTime开始,以minTime结束。

缓动函数的参数如下:

  • x:实际上这是被忽略的,但jQuery需要这样做。
  • t:当前输入值(通常,这是一个时间间隔,但不必),在[0..d]范围内。
  • b:开始输出值。
  • c:输出值的最大变化。
  • d:最大输入值(通常,这是一个时间间隔,但不是必须的)。