Flex 4 и ScrollBar stepSize
Я хочу указать сумму для прокрутки с помощью VScrollBar. Итак, во Flex 3 у нас есть "lineScrollSize", но как это свойство вызывается во Flex 4? Я думал, что это VScrolBar.stepSize - но он ничего не делает.
Кто-нибудь, пожалуйста, помогите мне. Я просто хочу, чтобы мой контент прокручивался быстрее на колесе мыши.
3 ответа
Заглянуть в 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;
}
Я нашел обходной путь, который требует создания подклассов / расширения скинов полос прокрутки.
Таким образом, вам нужно использовать только пользовательский скроллер, а не изменять каждый видовой экран внутри скроллера.
Я добавил это в комментарии об ошибке Flex SDK, которую, очевидно, не следует игнорировать с самого начала.
Вот пример того, как увеличить stepSize для прокрутки колесика мыши здесь: http://forums.adobe.com/message/2783736
С этим улучшением вы сможете отменить прокрутку колесика мыши немного проще: 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