Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Изменение размера кастомного scrollbar'а (http://www.flasher.ru/forum/showthread.php?t=141008)

GAmoVeR 13.06.2010 11:35

Изменение размера кастомного scrollbar'а
 
Меняю стили у скролла для Canvas

Код AS3:

<mx:Style>
ScrollBar {
<mx:Style>
ScrollBar {
        downArrowDownSkin: Embed(source="D:/Work/pirate/icos/down.png");
    downArrowOverSkin: Embed(source="D:/Work/pirate/icos/down.png");
    downArrowUpSkin: Embed(source="D:/Work/pirate/icos/down.png");
        upArrowDownSkin: Embed(source="D:/Work/pirate/icos/up.png");
    upArrowOverSkin: Embed(source="D:/Work/pirate/icos/up.png");
    upArrowUpSkin: Embed(source="D:/Work/pirate/icos/up.png");
        trackSkin: Embed(source="D:/Work/pirate/icos/track_back.png");
        thumbUpSkin: Embed(source="D:/Work/pirate/icos/track.png");
        thumbOverSkin: Embed(source="D:/Work/pirate/icos/track.png");
        thumbDownSkin: Embed(source="D:/Work/pirate/icos/track.png");
}
</mx:Style>

Каждый рисунок имеет ширину 10 пикселей. Скроллбар остается старой ширины. Как заставить его принудительно изменить ширину на 10 px?

Dimitry_II 13.06.2010 16:05

Вряд ли получится сделать "в одно касание".
Любой скроллируемый визуальный элемент - наследник класса ScrollControlBase, у которого есть свойства horisontalScroll и verticalScroll типа ScrollBar, то есть height и width меняется. Но свойства эти protected.
Поэтому 2 варианта:
- если делается своя библиотека элементов, то можно переопределить ScrollControlBase, от него наследовать визуальные классы и в них с легкостью менять скроллы - но это слишком гиморно ...;
- отключить скроллы в элементах и добавлять на сцену HScrollBar и VScrollBar, которые привязывать к нужным скроллируемым элементам - а их уже можно изменять на свое усмотрение;
- тупо для отдельно взятого проекта в исходниках в mx.controls.scrollClasses.ScrollBar подправить константу THICKNESS (по дефаулту 16 пикселей) - для компиляции. Метод, конечно, жутко некошерный, но действенный и быстрый :) (не пробовал, но должно прокатить).

GAmoVeR 14.06.2010 08:59

Смутило меня поведение VScrollBar, как то странно он себя ведет - просто так выставить ему позицию нельзя, сам встает куда хочет, и справа от него никакое содержимое поместить нельзя. Глюки?

Попробовал изменить в исходниках :) Скролла ровно два, и оба с одинаковым стилем. Сделал cleanup проекта, build по новой... и ничего не изменилось. Какой то есть кэш или надо было еще что то сменить?

Хемуль 14.06.2010 18:32

Чтобы полоса прокрутки стала узенькой, попробуйте для
- upArrowUpSkin
- upArrowOverSkin
- upArrowDownSkin
- upArrowDisabledSkin
- downArrowUpSkin
- downArrowOverSkin
- downArrowDownSkin
- downArrowDisabledSkin
задать узенький скин. То есть, укажите для всех 4-х состояний обоих кнопок узенькие скины.

Dimitry_II 15.06.2010 04:03

Наверняка нет.

Цитата с оффсайта для ряда стилей:
"Имя класса для использования темы оформления для кнопки со стрелкой вниз полосы прокрутки при щелчке кнопкой мыши на кнопке со стрелкой. При изменении темы оформления графически или программно требуется убедиться, что новая тема оформления той же высоты (для вертикальных полос прокрутки) или ширины (для горизонтальных полос прокрутки) что и полоса прокрутки."

Чего бы они упоминали про размеры, если бы они менялись?

Все-таки нужно возиться с VScrollBar и HScrollBar


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

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