Flex3:滚动跳得太快,无法找出原因

时间:2014-05-12 13:14:07

标签: flash flex scroll tilelist

我在Flex 3中使用TileList显示产品列表,每行3个。问题是第三行不适合面板,当我向下滚动它跳跃3行,所以看不到半可见的第三行,无论如何调整滚动速度?我搜索了其他相关的问题,我找到了一个有效的答案,但我不认为这是同样的问题。

这是一个问题: Flex List Scroll Speed With Mouse Wheel

无论如何这是我的瓷砖列表的代码:

<mx:Panel id="homePage" width="75%" title="{resourceManager.getString('general','menubar_mostsold')}">
<mx:TileList id="list" dataProvider="{arrPro}"    itemRenderer="compIdea.view.Thumb" width="100%" height="100%"itemClick="product_selected(event)"/> 
</mx:Panel>

我试过调整&#34; verticalLineScrollSize&#34;面板的属性,因为TileList不是容器,也没有该属性。我是否真的必须扩展类List并覆盖mouseWheelHandler方法?

先谢谢。

2 个答案:

答案 0 :(得分:2)

我遇到了这个问题,这个链接对我没有帮助。

试试这个

list.verticalScrollPosition+=(event.delta*-20);//you can experiment`                
event.stopPropagation();`

答案 1 :(得分:0)

感谢@GiaGandi的一些帮助,我已经解决了滚动问题,首先在你的列表中添加一个eventListener,如此

list.addEventListener(MouseEvent.MOUSE_WHEEL, scrollHandler, true);

使用MouseEvent创建一个函数,@ GiaGandi所说的是正确的,除了乘以-20之外,只需要滚动二十倍,我所做的就是使用MouseEvent的Delta来判断我是否向上滚动或者向下,然后只添加或减去列表的verticalScrollPosition 1.列表的verticalScrollPosition是实际行的插入,因此向它添加1会使它向下移动一行。

然后我遇到了一个不同的问题,当列表到达它的结束或结束它不会停止滚动并发生错误,所以只是控制如果verticalscrollposition大于0,如果向上或更高的行数在你的列表中,每个对象正常一行它将是你的dataProvider的长度,但因为我的TileList每行有3个对象,我将它除以3然后减去2,所以当它停止时,底部会留下两行滚动

public function scrollHandler(event:MouseEvent):void{
             if(event.delta < 0){
                 if(list.verticalScrollPosition < (arrPro.length / 3 - 2)){
                     list.verticalScrollPosition += 1;
                }
             }else{
                 if(list.verticalScrollPosition > 0){
                     list.verticalScrollPosition -= 1;
                 }
             }
            event.stopPropagation();
        }

希望这可以帮助将来的某些人,我没有在SO中找到任何其他解决方案。特别感谢@GiaGandi的帮助!