我在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方法?
先谢谢。
答案 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的帮助!