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, которую, очевидно, не следует игнорировать с самого начала.

https://bugs.adobe.com/jira/browse/SDK-17288

Вот пример того, как увеличить 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

Другие вопросы по тегам