Javascript 如何为视差运动添加缓和?

Javascript 如何为视差运动添加缓和?,javascript,easing,easing-functions,Javascript,Easing,Easing Functions,我正在对一些图像应用视差效果,我想对它们应用缓和。视差的逻辑非常简单,我计算图像到窗口中心的距离,并将其表示为1的因子,其中0是屏幕的中间,1是底部。我也可以将其应用于屏幕的上半部分,因此-1将是顶部 理想情况下,我只想直接从这里()插入一些函数。因此,假设我希望使用“easeOutSine”: //t:当前时间,b:起始值,c:值的变化,d:持续时间 函数(x,t,b,c,d){ 返回c*Math.sin(t/d*(Math.PI/2))+b; } 我应该传递什么值?我认为最不明显的是d(持

我正在对一些图像应用视差效果,我想对它们应用缓和。视差的逻辑非常简单,我计算图像到窗口中心的距离,并将其表示为1的因子,其中0是屏幕的中间,1是底部。我也可以将其应用于屏幕的上半部分,因此-1将是顶部

理想情况下,我只想直接从这里()插入一些函数。因此,假设我希望使用“easeOutSine”:


//t:当前时间,b:起始值,c:值的变化,d:持续时间
函数(x,t,b,c,d){
返回c*Math.sin(t/d*(Math.PI/2))+b;
}

我应该传递什么值?我认为最不明显的是d(持续时间),因为它们不是基于持续时间的动画。这些方程式是否适用


注意:我不想使用任何库,这是纯JS。

我自己解决了这个问题。在不发布所有代码的情况下,以下是其要点:

function easeInQuart(t, b, c, d) {
  return c*(t/=d)*t*t*t + b;
}

var deltaY // The distance the element is from the bottom of
           // the screen expressed as a factor of 1

var origY // The original position
var distanceY // The distance it can move
var y = easeInQuart(deltaY, origY, distanceY, 1);