Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 31.01.2011, 13:20
Alex_YAROST_22 вне форума Посмотреть профиль Отправить личное сообщение для Alex_YAROST_22 Найти все сообщения от Alex_YAROST_22
  № 1  
Ответить с цитированием
Alex_YAROST_22
[+1.3 18.03.10]

Регистрация: Mar 2010
Сообщений: 45
По умолчанию Непонятная проблема работы ScrollBar с PageSize

Всем привет. Появилась необходимость использовать отдельно ScrollBar для управления кастомным списком. Список настолько кастомный, что никакие ScrollPane и прочие зверушки не катят.

Так вот, высота моего кастомного списка 850px. Видимой области 200px Я, наивный чукотский парень, думал:
задам:
minScrollPosition равное 0.
maxScrollPosition равное 850
pageSize равное 200

И буду спокойненько считывать scrollPosition и менять координаты списка. Вот тут знающие люди уже начали смеяться Потому что
а) pageSize может быть больше maxScrollPosition (оказывается 0_0 ) т.е. они вообще никакого отношения друг-к-другу не имеют.
б) размер ползунка расчитывается и отрисовывается настолько странно, что я, например, так и не смог добиться чтобы ползунок был размером 98% от общей длинны скрола.

Собственно вопрос - а че ваще за фигня такая? Кроме шуток - как управлять размером ползунка? "Число строк" - это каких строк, у меня картинки там вообще? "Максимальное значение для прокрутки" - значение чего и в чем оно измеряется?

Ну и если в двух словах вдруг объясните как реализовать идею, которую я изложил вначале - буду признателен. Спасибо.

P.S.:
свойства ScrollBar:
lineScrollSize : Number Расстояние в пикселях, на которое перемещается ползунок прокрутки при нажатии кнопки со стрелкой.
maxScrollPosition : Number Число, представляющее максимальное значение для прокрутки.
minScrollPosition : Number Число, представляющее максимальное значение для прокрутки.
pageScrollSize : Number Расстояние, на которое перемещается ползунок при нажатии полосы прокрутки в пикселях.
pageSize : Number Число строк, равное максимальному числу строк на одной странице.


Последний раз редактировалось Alex_YAROST_22; 31.01.2011 в 13:24.
Старый 31.01.2011, 15:34
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
В вашем случае:

minScrollPosition = 0
maxScrollPosition = высота списка - высота видимой области
pageSize = высота списка

Старый 31.01.2011, 17:35
Alex_YAROST_22 вне форума Посмотреть профиль Отправить личное сообщение для Alex_YAROST_22 Найти все сообщения от Alex_YAROST_22
  № 3  
Ответить с цитированием
Alex_YAROST_22
[+1.3 18.03.10]

Регистрация: Mar 2010
Сообщений: 45
Ну это-то я первым делом попробовал, спасибо
Суть в чем: если мы назначим мин=0, макс=800 и pagesize=600 например, то размер бегунка будт процентов 40% (на глаз) от общей длинны скроллера... но никак не 75% как, по идее, должно было быть.
Если pagesize ставить существенно меньше чем maxScrollPosition то искажение не столь заметно на глаз.

Либо я, что вероятнее, где-то не понимаю логики работы скрола.

Старый 31.01.2011, 17:50
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
но никак не 75% как, по идее, должно было быть.
Напишете свой, так и будет. В ScrollBar высота ползунка высчитывается так:
Код AS3:
thumbHeight = trackHeight < 0 ? 0 : Math.round(
                pageSize /
                (this.maxScrollPosition - this.minScrollPosition + pageSize) *
                trackHeight);
Во всех компонентах Flaex 3 использующих ScrollBar pageSize высчитывается описанным мной способом.

Создать новую тему Ответ Часовой пояс GMT +4, время: 06:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
ScrollBar

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 06:01.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.