![]() |
1
1
在flex 3中,itemrenderer的工作方式使得平滑滚动很难实现。基本上,flex会回收从列表顶部滚动出来的项目渲染器,作为列表底部用于新数据的显示对象。Adobe在flex 3中实现了大多数列表组件,在这些组件出现在屏幕上时创建并添加它们,而不仅仅是在屏幕外,因此它们“弹出”并且无法平滑滚动。我不知道他们为什么不能以类似的方式对当前滚动窗格上方或下方的项目执行+/-一个位置,但他们没有,默认情况下,我们一直使用粘性滚动。 解决方法确实存在,尽管您注意到的方法(将数据报放到画布中)否定了项目呈现器保存显示对象的意图,并导致性能成本。这对于flex 4中大多数基于列表的flex组件都是固定的,但对于datagrid不会立即固定。DataGrid/AdvancedDataGrid组件由一个位于印度的独立团队维护,这是我上次听说的,因此它往往比SDK的其余部分落后一点。 我建议你试试类似的 this implementation of a smooth-scrolling list by Alex Harui . 我不确定它在DataGrid或AdvancedDataGrid上的工作效果如何,但这是我能想到的使列表正确滚动的最直观的技术。 |
![]() |
2
1
试试这个…它仍然基于上面提到的亚历克斯的代码。他应该仍然是一个很好的开始,以消除快速到行行为。原始来源: http://blogs.adobe.com/aharui/2008/03/smooth_scrolling_list.html 亚历克斯最初的一些代码用于平滑的垂直滚动,但这不是我对数据报的问题。它是平滑的水平滚动,我需要。我以一种非常规的方式使用数据报来分析我们的数据库输出的纯文本报告(提供文档视觉反馈的好方法)。下面的代码允许内容离开屏幕,用户可以滚动,而不必执行该跳到列的行为。 您可以调整它以使用相同的数学例程进行垂直滚动,然后它将使滚动成为可能,并忽略对齐到行的行为。尤其是,切换listcontent.move方法的用法以垂直移动内容,并使用从垂直滚动条计算的圆形像素值的倒数(而不是我使用水平滚动条)。 这个方法比上面链接中的亚历克斯的方法要简单一点——代码要少得多,所以尝试适应并看看它是如何工作的。
|