![]() |
проблемы с синхронизацией скролла по onMouseWheel
Здравствуйте!
Есть скролл Код:
if (obj_mc._height<375)все работает, но при прокрутке когда ползунок уже дошел до конца текст в клипе obj_mc продолжает прокручиваться, при этом при разной скорости движения колеса он двигается по-разному. пробовала менять формулу, максимальные и минимальные значения, ставила разные числа, придумывала переменные - ничего не выходит толком. мне кажется, это движение должно зависить от того, во сколько раз объект длинее области прокрутки, но не разобраться. мой вопрос: можно ли изменить существующую формулу, чтобы все работало как надо? если да, то как? если нет, как мне именно в моем случае сделать прокрутку колесом? |
Я бы посоветовал завести функцию moveObject() и все действия по перемещению объекта вынести туда.
|
спасибо)) но у меня проблемы именно с этим перемещением.
надо как-то связать перемещение двух объектов, чтоб к тому времени когда один дошел до конца, другой бы тоже подошел к завершению. не взирая на их разный размер и путь. у меня крайне мало опыта в программировании, в том числе на экшн скртип, поэтому я не знаю как. хотя, по сути, это математическая задачка, но мне ее не решить. |
может быть кто-то может помочь примерами хорошо работающей прокрутки колесом в похожем случае (когда есть клипы объект, ползунок, область прокрутки и все события происходят с ними)
|
http://www.flasher.ru/forum/showthread.php?t=111891
отличный скроллинг |
ogonek, возможно Вы скачали мой скроллер из предложенной темы. Я пожалуй поясню свои формулы, ибо Вам нужно понимание а не чужой исходник)
Я сам впервые столкнулся с необходимостью запрограммировать скроллер довольно давно, и перепробовал разные подходы, пока не остановился на простой и очевидной вещи - смотрите: 1) Положение целевого клипа (таргета) полностью согласуется с положением движка 2) Движок - то, что мы двигаем руками, кнопками и колесиком. Т.е. его положение зависит от нескольких факторов, его поведение гораздо сложнее чем у таргета. При этом его размеры, лимиты перемещения, координаты и прочие свойства нам известны заранее. 3) Значит мы должны работать не с таргетом, а с движком. После всех операций по перемещению движка и проверки его лимитов мы просто перемещаем таргет в соответствующие движку координаты. Тогда неважно, чем и как мы двигали движок - может быть даже скриптом, листающим текст на нужный абзац))) Главное - правильно двигать движок и вывести формулу, учитывающую его размеры - если Вы меняете его высоту в зависимости от высоты таргета (длины текста). 4) Тогда нетрудно проверить, не вышел ли движок за лимиты, и если вышел - вернуть его в границы. Поскольку это ограничение действует в любом случае, его можно поместить в одну конечную функцию перемещения движка, а эту функцию вызывать при нажатии на кнопки, трек, при драге движка и при прокрутке колесика мыши. 5) Остается правильно вывести формулу зависимости положения таргета от положения движка. Таргет проходит определенный путь, чтобы в верхней позиции была видна верхняя строчка, а в нижней - нижняя. Этот путь равен высота таргета минус высота маски (окошка). Я назвал его target_way. Таргет должен пройти этот путь, когда движок проходит сверху до низу)) У движка свой путь, и он равен высота скроллера минус высоты кнопок и минус высота движка(!) Назовем его pimp_way. Итак когда движок проходит pimp_way, таргет проходит target_way. Можно вывести коэфициент : target_way / pimp_way. Теперь достаточно умножить СМЕЩЕНИЕ движка на этот коэфициент, и мы узнаем, насколько сместить таргет. Его начальное положение равно координате у маски (окошка). Начальное положение движка равно у скроллера плюс высота кнопки. Если во внутренних координатах, когда кнопка стоит в ноль - просто высоте кнопки. Сохраним эти две константы как таргет_старт и пимп_старт. Итак: таргет._у = таргет_старт - коэфициент * смещение_движка (минус потому что таргет идет вверх, когда движок - вниз) Т.е. Код:
таргет._у = таргет_старт - (target_way / pimp_way) * (пимп._у - пимп_старт) |
| Часовой пояс GMT +4, время: 12:16. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.