如何设置Scrollview的位置?

时间:2014-07-23 17:20:38

标签: famo.us

我尝试滚动滚动条 查看某个位置 通过setPosition(x)。 卷轴的短暂时刻 将滚动区域移动到正确的位置 位置,但立即反弹 背部。 怎么做对了?

3 个答案:

答案 0 :(得分:1)

使用Famo.us 0.3,它似乎就像这样工作。

让我们说:

  • 我的滚动视图的显示区域高度为250像素
  • 我的滚动视图的内容总共高度为1000像素
  • 我想滚动到scrollview的最底部

代码:

// Scrollview area height 250 pixels
var myScrollviewArea = 250;

// My scrollview contents' total height 1000 pixels
var myScrollviewContents = 1000;

// Contents - Area = total pixels to scroll
var scrollpx = myScrollviewContents - myScrollviewArea;

// Setting scrollview to use the first element as offset origin
myScrollview.getOffset(1);

// Setting scroll position with setOffset()
myScrollview.setOffset(scrollpx);

<强>更新

上面的代码似乎非常随机,因为偏移索引会发生变化。

这里有一些更新的代码,仍然有点抽搐,但有效:

function _scrollToBottom() {
    if(myScrollviewSurfaces) {
        // Pixels to scroll
        var scrollpx = 0;

        // Current first visible element
        var index = myScrollview.getCurrentIndex();

        // Offset from the top of the index
        var offset = myScrollview.getOffset();

        // Calculating the distance from index to bottom
        for(var i = index; i < myScrollviewSurfaces.length; i++) {
            scrollpx = scrollpx + myScrollviewSurfaces[index].getSize(true)[1];
        }
        if(offset > 0) {
            scrollpx = scrollpx - offset;
        }
        scrollpx = scrollpx - myScrollview.getSize(true)[1]; 

        if(scrollpx > 0) {
            myScrollview.setVelocity(1);
            myScrollview.setPosition(scrollpx);
        }
    }
}

答案 1 :(得分:0)

我现在明白了。 Scrollview为粒子添加了一个弹簧。当仅移动粒子时,弹簧将其移回锚定位置。 将弹簧锚设置到相同位置可以解决问题。

scrollview.setPosition(x)
scrollview.spring.setAnchor(x)

答案 2 :(得分:0)

在scrollview上设置选项。它是Scrollview将在其中显示内容的区域大小(以像素为单位)。

横跨400px的Scrollview:

scrollview.setOptions({
    clipSize: 400,
});

横跨整个背景的Scrollview:

scrollview.setOptions({
    clipSize: mainContext.getSize()[1],
});