PDA

Просмотр полной версии : Как заставить работать ScrollBar


HardCoder
23.06.2011, 21:45
Здравствуйте. Запихнул в библиотеку компонент ScrollBar. Теперь надо его создать программно. Но в справке ничего нет про то как прикрепить его к экранному обьекту. Хоть бы какое - то свойство target или еще что нибудь, а то совсем ничего! Мне бы хотя пару строчек кода для примера как прокручивать какой-нибудь спрайт. В гугле и здесь ничего не нашел. Дальше этого я не могу ничего сделать var scrollBar:ScrollBar = new ScrollBar();
addChild(scrollBar); Помогите, пожалуйста.

goodguy
23.06.2011, 21:47
Надо юзать UIScrollBar, у него есть свойство scrollTarget. Просто ScrollBar - это другое

HardCoder
23.06.2011, 22:03
Извините, но не могу. Я так понимаю, что UIScrollBar предназначен только для текста. Ругается, что у моего дисплейобджекта нет свойств maxScrollV и scrollV. Хотел стать сильно умным, вот и создал у своего спрайта эти два публичные свойства. UIScrollBar отобразился, ошибок уже нет, но при прокрутке, мой спрайт стоит на месте. И область которая должна быть скрыта не стала скрытой

GBee
23.06.2011, 22:08
попробуйте их сделать сеттерами и гетерами и обрабатывать как вам надо.

HardCoder
23.06.2011, 22:11
Я бы сделал, только не знаю как их обрабатывать так как мне надо. Я и не совсем понимаю, зачем они нужны эти maxScrollV и scrollV. В справке о них ничего не описано. Знаю только, что они принадлежат лишь двум классам TextField и TLFTextField.

derhab
23.06.2011, 22:13
так возьмите ScrollPane

HardCoder
23.06.2011, 22:14
Да и раз на то пошло, то могу использовать scrollPane (что уже и собирался сделать). Но, просто мне кажется что где-то я видел пример прокрутки DisplayObject-а с помощью ScrollBar или UIScrollBar. По крайней мере на АС2 точно.

Добавлено через 3 минуты
И меня сбило с толку то, что в классе ScrollBar нигде не указано что он используется лишь для текста. В то время, как в UIScrollBar адобовцы это явно дали понять. Стало интересно, зачем этот ScrollBar нужен, если там нет ни одного примера? Может он используется как суперкласс с набором методов и ничего больше?

DJDrugsounD
23.06.2011, 22:33
используй движок TweenMax для скроллинга он может MovieClip крутить

S-ed
23.06.2011, 23:56
scrollV - это текущее положение текста относительно окна, по вертикали. maxScrollV - его максимум (только для чтения)
В отличии от scrollH (в пикселях), scrollV - в строках. Нужен для того чтобы перематывать текст на нужную позицию.

The ScrollBar component provides the end user with a way to control the portion of data that is displayed when there is too much data to fit in the display area. Data - это обычно текстовые данные.

scrollPane - это аналог лоадера. Ему скармливается внешний линк и он подгружает его в себя.

goodguy
24.06.2011, 09:16
Data - это обычно текстовые данные.
Да ну? Это не так. Data - это просто данные. Любые. Какие именно, зависит от контекста.

HardCoder
24.06.2011, 10:07
С уважением к S-ed, я думаю он имел в виду данные, которые отображает именно этот компонент, а именно - текстовые данные.

Добавлено через 3 минуты
Да, и простите все за всю эту дискуссию. Это я немного затупил - в библиотеку добавил компонент UIScrollBar, а в коде вызываю ScrollBar. Теперь, внимательно посмотрев, во флешовских компонентах нет никакого ScrollBar. Есть UIScrollBar и ScrollPane. Первый для текста, второй для картинок.

DaFive
24.06.2011, 12:37
Да почему же для текста. У УИСкроллбара есть свойства, которые вам нужны. Их нужно поставить вручную. Вот писал скроллер для клипов контакт-листа.
s_bar - UIScrollBar.

s_bar.height = MAX_CONTACTS_ON_SCREEN * ContactClip.TOTAL_HEIGHT + MAX_CONTACTS_ON_SCREEN * ContactsContainer.CONTACTS_OFFSET;

s_bar.minScrollPosition = 0;
s_bar.maxScrollPosition = totalContacts - MAX_CONTACTS_ON_SCREEN;


Так, для объяснения:
MAX_CONTACTS_ON_SCREEN - число отображаемых контактов под маской.
ContactClip.TOTAL_HEIGHT - высота клипа
ContactsContainer.CONTACTS_OFFSET - расстояния между клипами.
totalContacts - всего контактов.

Просто скроллбар настроен так, что в нем всего 16 (или 15) клипов, но в них подставляются данные контактов при скроллинге. А контактов может быть мульён.

В обработчике s_bar.addEventListener(ScrollEvent.SCROLL, onScr); описаны движения клипов.


function onScr(event:ScrollEvent):void
{
trace(event.delta);//смещение
}

goodguy
24.06.2011, 12:56
Я тоже писал для спрайта. И тоже все работает

HardCoder
24.06.2011, 15:18
Круто, если будет время, попробую. Сейчас пока хватает Scrollpane.