Javascript Famo.us:如何以编程方式设置滚动视图位置的动画?

Javascript Famo.us:如何以编程方式设置滚动视图位置的动画?,javascript,famo.us,Javascript,Famo.us,我可以使用mycrollview.setPosition(y)直接设置位置,或者使用mycrollview.setVelocity(delta)手动应用运动。但是,是否有方法将平滑、精确的缓和过渡应用到Scrollview的位置?谢谢 以下是我决定的(可能有更好的方法): var self=this;//当前视图对象 var transitionTime=500//太太 //每16.67毫秒(1/60秒)我们需要移动多远? self.animatedScrollDelta=(self.myScr

我可以使用
mycrollview.setPosition(y)
直接设置位置,或者使用
mycrollview.setVelocity(delta)
手动应用运动。但是,是否有方法将平滑、精确的缓和过渡应用到Scrollview的位置?谢谢

以下是我决定的(可能有更好的方法):

var self=this;//当前视图对象
var transitionTime=500//太太
//每16.67毫秒(1/60秒)我们需要移动多远?
self.animatedScrollDelta=(self.myScrollview.getPosition()/(transitionTime/16.6667));
self.animatedScroller=Timer.every(animateScrollerCallback,1);
函数animateSrollerCallback()
{
var pos=self.myScrollview.getPosition()-self.animatedScrollDelta;
self.myScrollview.setPosition(数学最大值(0,位置));
如果(位置<0)
定时器。清除(自动画滚动器);
}

注意:这是线性动画,这正是我所需要的。我相信其他缓和公式可以使用。

或者您可以使用FlexScrollView,它使用物理弹簧将滚动位置平滑地拉到新位置。它还具有用于设置滚动位置的扩展API:

var self = this; // current view object
var transitionTime = 500; //ms

// How far do we need to move every 16.67 ms (1/60th of a second)?
self.animatedScrollDelta = (self.myScrollview.getPosition() / (transitionTime / 16.6667));
self.animatedScroller = Timer.every(animateScrollerCallback, 1);

function animateScrollerCallback()
{
    var pos = self.myScrollview.getPosition() - self.animatedScrollDelta;
    self.myScrollview.setPosition(Math.max(0, pos));

    if(pos < 0)
        Timer.clear(self.animatedScroller);     
}