Есть ли способ отключить эффект отскока полосы прокрутки / списка в flex 4.5 (мобильный)?

#apache-flex

#apache-flex

Вопрос:

Я пытаюсь создать свой собственный компонент, который ведет себя как список и поддерживает бесконечную прокрутку (в одномерном: вертикальном или горизонтальном) — в обоих направлениях. Например, вертикально расположенный список, который пользователь может прокручивать вверх или вниз вечно — даже не нажимая на «последний» или «первый» элемент. Хорошее применение для этого: календарь, который отображает каждый месяц в виде элемента списка.

В любом случае, есть куча вещей, которые нужно преодолеть. Первый из которых, я думаю, заключается в отключении эффектов отскока полосы прокрутки (представлен в последней версии Flex 4.5 (для мобильных устройств) SDK).

Если я смогу отключить эффекты отскока, я предполагаю, что затем смогу добавлять / удалять элементы по мере необходимости в список, и он будет прокручиваться бесконечно.

Есть идеи?

Кришна

Ответ №1:

Лично для меня бесконечный список означал бы большую переработку основного компонента списка. Для обратного проектирования требуется много работы, и вы, вероятно, наткнетесь на стену. Я думаю, что вы хотите создать компонент с нуля и расширить его SkinnableContainer .

С этого момента вам нужно решить, как реализовать и каково взаимодействие с пользователем для бесконечного списка, затем необходимо внедрить надлежащие методы и повторно использовать ваши средства визуализации элементов.

Комментарии:

1. Спасибо за повторный ответ на этот вопрос. Я знаю, что вы ответили в другом моем сообщении. Я разработал пользовательский компонент, который расширяется от SkinnableDataContainer и копирует большую часть кода прокрутки из реализации Flex scrollbar. Я заставил это работать, но мне нужно немного доработать. Возможно, я опубликую другой вопрос.

Ответ №2:

По моему опыту, вы можете просто реализовать отложенную загрузку компонента List, добавив событие изменения свойства в окно просмотра группы данных списка

 list.dataGroup.addEventListener( PropertyChangeEvent.PROPERTY_CHANGE, onScrollPropertyChangeHandler );
  

Затем, в случае необходимости, прослушайте положение вертикальной прокрутки

 if ( event.property == "verticalScrollPosition" ){
    var listHeight:Number = itemList.height;
    var curAnchorPoint:Number = event.newValue   listHeight; 
    var bottomPositionToLoad:Number = 200; // Start loading when the list nearly reach the bottom minus 200
    var anchorToLoadNextPage:Number = itemList.dataGroup.contentHeight - bottomPositionToLoad;

    if(curAnchorPoint >= anchorToLoadNextPage){
    loadNextPage(); 
    }
}
  

При запуске loadNextPage () не забудьте удалить событие изменения свойства, чтобы loadNextPage не вызывался несколько раз.