PDA

Просмотр полной версии : scrolling


d0dge
28.11.2002, 23:13
Как самому создать скролл через *AS*? Мне нужно из скролбара (который я сам нарисовал) сделать работающий скролинг. Я искал в исходниках - не нашел :(

Задача такая - сделать горизонтальный скролбар на всю ширину экрана, который бы горизонтально скролил картинку шириной в 5000 пикселей.

Спасибо.

blackhund
29.11.2002, 03:24
есть такая идея: (для удобства описываю и саму кнопку скролинга)
делаешь клип кнопки скролинга (прошу прощения за терминологию), ну бегунок другими словами.
называешь, например, scrollBar
дальше, пусть твой клип бегунка перемещается в пределах окна мувика, причем левая граница
бегунка - leftBorder (крайнее левое значение координаты х), а правая граница - rightBorder
пишешь в кадре сценарий для клипа scrollBar:

onClipEvent(mouseDown) { //т.е. кнопка мыши нажата и удерживается на бегунке
//изменяем только координату х, т.к. бегунок вертикально неподвижен
if ((_xmouse >= leftBorder) && (_xmouse <= rightBorder)){
scrollBar._x = _xmouse;
}
if (_xmouse < leftBorder) scrollBar._x = leftBorder;
if (_xmouse > righttBorder) scrollBar._x = rightBorder;
//выше перечисленные проверки обеспечивают нахождение бегунка в допустимой области
//и перетаскивание мышкой
placePicture();//описывается ниже
}

пусть также картинка, которая имеет ширину 5000 пикселей определена как клип с названием
picture
ее расположение относительно окна мувика можно менять, модифицируя свойство _x
причем расположение бегунка однозначно будет определять координату х картинки.
остается написать функцию соответствия положения бегунка положению картинки
пусть крайнее левое положение бегунка соотв-ет крайнему левому положению картинки,
которое опр-ся координатой leftPos. rightPos соотв-но

function placePicture(){
k = (rightPos - leftPos) / (rightBorder - leftBorder); //коэф-ент масштабирования
position = leftPos * (1 + k); //текущая позиция картинки
picture._x = position;
}

вроде должно работать...

blackhund
29.11.2002, 03:30
м-да...
проглючило меня. я неправильно написал функцию. я ведь не учел
положение самого клипа бегунка:)
исправляюсь:

function placePicture(){
k = (rightPos - leftPos) / (rightBorder - leftBorder); //коэф-ент масштабирования
position = leftPos + (scrollBar._x - leftBorder) * k; //текущая позиция картинки
picture._x = position;
}

JudgeFog
29.11.2002, 03:38
Плохо искал в исходниках!
в "элементах интерфейса" лежит мой "скроллер на 1.5 Кб" - ищи не по названию, а по имени автора - JudgeFog.
Там все предельно элементарно (для МХ)

d0dge
29.11.2002, 15:41
blackhund, я не понимаю, как я могу в КАДРЕ написать сценарий для клипа? Ведь в кадре нельзя поставить "OnclipEvent()". Это ведь можно поставить только в сценарии самого клипа...? :confused:

Alexey (G-fi)
29.11.2002, 18:16
можно сделать...

на вскидку... НУ скажем двумя способами:
В злосчастном, вредном и противном кадре ;) написать:
_root.onEnterFrame= function() {
...
}, а хотя это ведь невозможно ;) :D :D :D

и второй:
развивая blackhund-а: на бегунке, структура которого ::
movie clip, а в нем button (который собственно и обрабатывает on(press), on(release)) :: пишешь:
onClipEvent (enterFrame) {
_root.placePicture() /* вызов функции */
}

дерзай!!!

d0dge
29.11.2002, 18:42
Alexey (G-fi), вторая мысль не ясна :(

Все равно не удается привести бегунок в движение :confused:

Pietrovich
30.11.2002, 05:04
короче додж на, читай... и хелп читай иногда... и в уроки заглядывай...

спецом для тебя показал как простенько прикручивать клипИвенты, включая функции...

d0dge
30.11.2002, 13:04
Pietrovich, файл не качается, вышли его плиз на alex@nnet.org.

corvustheone
02.04.2003, 13:37
Оригинал написал(а) JudgeFog
Плохо искал в исходниках!
в "элементах интерфейса" лежит мой "скроллер на 1.5 Кб" - ищи не по названию, а по имени автора - JudgeFog.
Там все предельно элементарно (для МХ)

слушай, камрад, а ты не мог бы загнать мне его на емайл?

corvuz@mail.ru.no.spam

а то он никак скачиваться не желает - хоть ты тресни =(((

а ведь очень надо.

я не флэшер, но возникла такая ситуация =((