![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| solenko |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 9 Всего: 67 |
Здравствуйте!
Пытаюсь сделать прокрутку изображения в диве. Вот что получилось:
Проблемма в том, что прокрутка почему-то останавливается при изменении положения мышки. Иногда полностью, а иногда просто замирает на время движения. Подскажите, плиз, в чем проблемма. То, как это не работает, можно увидеть здесь (пока только в IE) -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Вероятно браузер захлёбываеться высчитывать скорость и "пропускает" setTimeout в doMove. Замени на setInterval (есессно вызывать один раз). Также передавай функцию по имени, а не строкой "doMove()", т.к. создаёться лишняя анонимная функция.
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| solenko |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 9 Всего: 67 |
Sardar, дело не в этом. Почему-то возникает событие onmouseout при перемещении над дивом.
По поводу doMove -- спасиб. Исправил, и, кажется, даже понял По поводу setInterval вметсто setTimeout -- мне ж тогда прийдется каждый раз убивать и снова создавать этот интервал, ведь скорость-то меняется. -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
| Sardar |
|
||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
На самом деле поставить новый таймату гораздо более ресурсоёмкая (особенно в том виде как оно сейчас) операция чем изменять шаг прокрутки. Другими словами запускаешь интервал со средней частотой и меняешь количество сдвигаемых пикселей. Вариация в пикселях должна быть не больше 0-5, иначе не красиво подрыгивать начнёт.
На самом деле ты ловишь события над картинкой, а они уже дальше "пузыряться" к документу, по пути встречая слой контейнер. Если мышь убегает с картинки на бордер дива, то получаем onmouseout на картинке, если обратно с бордера на картинку или вообще в сторону, то получаем onmouseout на слое. Т.е. слой получает два вызова onmouseout, но event.srcElement (на ком событие) разные. Получив onmouseout с картинки на бордер, а потом не выбегая из дива двинуть мышью назад, то onmouseenter возбуждено не будет, всё застопориться пока ты не вынесешь мышь за пределы дива и не вернёшься обратно. Совет: проверяй по event.srcElement == this в onmouseout. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||
|
|||||
| solenko |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 9 Всего: 67 |
Огромное спасибо. Совету с event.srcElement внял -- все просто прекрастно. Сейчас буду пытаться внять и остальным
-------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |