1

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

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;
}

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

这可能吗?关于我需要做什么的解释会很棒。

4

1 回答 1

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:最大输入值(通常,这是一个时间间隔,但不一定是)。
于 2014-04-15T19:44:58.140 回答