我想指定用 VScrollBar 滚动的量。所以在 Flex 3 中我们有“lineScrollSize”,但是这个属性在 Flex 4 中是如何调用的呢?我认为它是 VscrollBar.stepSize——但它并没有做任何事情。
有人请帮助我。我只是希望我的内容在鼠标滚轮上滚动得更快。
我想指定用 VScrollBar 滚动的量。所以在 Flex 3 中我们有“lineScrollSize”,但是这个属性在 Flex 4 中是如何调用的呢?我认为它是 VscrollBar.stepSize——但它并没有做任何事情。
有人请帮助我。我只是希望我的内容在鼠标滚轮上滚动得更快。
看看LayoutBase.getVerticalScrollPositionDelta
。您可能想要子类化并覆盖它!
这是我在自己的布局类中所做的:
override public function getVerticalScrollPositionDelta(navigationUnit:uint):Number {
var n:Number=super.getVerticalScrollPositionDelta(navigationUnit);
if (navigationUnit==NavigationUnit.DOWN || navigationUnit==NavigationUnit.UP) return 10*n;
return n;
}
这里有一个如何增加 mouseWheel 滚动的 stepSize 的示例: http ://forums.adobe.com/message/2783736
通过此增强功能,您应该能够更轻松地取消 mouseWheel 滚动:http: //bugs.adobe.com/jira/browse/SDK-26432
链接到该错误的子任务有一个简单的代码示例,您应该能够修改它以防止鼠标滚轮滚动并调用您的缩放逻辑:
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Script>
<![CDATA[
...
private function mouseWheelChangingHandler(event:FlexMouseEvent):void {
// don't scroll by preventing default
event.preventDefault();
// instead zoom
yourZoomFunction(event.delta);
}
]]>
</fx:Script>
<s:Scroller id="scroller" width="250" height="200" mouseWheelChanging="mouseWheelChangingHandler(event)">
<s:DataGroup id="vp" dataProvider="{getDP()}" itemRenderer="spark.skins.spark.DefaultItemRenderer">
<s:layout>
<s:VerticalLayout gap="0" horizontalAlign="justify" />
</s:layout>
</s:DataGroup>
</s:Scroller>
</s:Application>
此线程中的讨论也可能对您有用: http ://forums.adobe.com/message/3393852#3393852
我想出了一个解决方法,它需要子类化/扩展滚动条的皮肤。
这样你只需要使用自定义滚动条,而不是修改滚动条内的每个视口
我把它放在对 Flex SDK 错误的评论中,这显然不应该被忽视