有没有办法在flex 4.5(移动)中禁用滚动条/列表跳出效果?

时间:2011-05-17 03:12:35

标签: flex

我正在尝试创建自己的组件,其行为类似于列表并支持无限滚动(在一维中:垂直或水平) - 两个方向。例如,垂直布局的列表,用户可以永久地向上或向下滚动 - 而不会击中“最后”或“第一”项目。一个很好用的:一个日历,每个月显示一个列表项。

无论如何,有很多事情需要克服。我认为,第一个是禁用滚动条的弹跳效果(在最新的Flex 4.5(移动)SDK中引入)。

如果我可以禁用反弹效果,我猜我可以根据需要在列表中添加/删除项目,它会无限滚动。

有什么想法吗?

克里希纳

2 个答案:

答案 0 :(得分:2)

就个人而言,无限列表意味着核心List组件的大量返工。逆向工程需要做很多工作,你可能会遇到困难。我想你想要做的是从头开始创建一个组件并扩展SkinnableContainer

从现在开始,您需要决定如何实现以及无限列表的用户交互,然后需要实施正确的实践并重用您的项目渲染器。

答案 1 :(得分:1)

根据我的经验,您可以通过将属性更改事件添加到列表的dataGroup的视口中来简单地在List组件上实现延迟加载

list.dataGroup.addEventListener( PropertyChangeEvent.PROPERTY_CHANGE, onScrollPropertyChangeHandler );

然后在事件中,听取垂直滚动位置

if ( event.property == "verticalScrollPosition" ){
    var listHeight:Number = itemList.height;
    var curAnchorPoint:Number = event.newValue + listHeight; 
    var bottomPositionToLoad:Number = 200; // Start loading when the list nearly reach the bottom minus 200
    var anchorToLoadNextPage:Number = itemList.dataGroup.contentHeight - bottomPositionToLoad;

    if(curAnchorPoint >= anchorToLoadNextPage){
    loadNextPage(); 
    }
}

当loadNextPage()正在运行时,请记住删除属性更改事件,以便不会多次调用loadNextPage。