![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2008
Сообщений: 65
|
Возникла серьезная проблема с сообщениями MOUSE_WHEEL. Внутри сообщения MouseEvent передаётся поле delta, указывающее количество строк. Как правило, оно равняется +/-3 (иногда при сильных рывках +/-6).
НО, флеш зараза шлёт эти сообщения пачками, причём количество зависит как от конкретного компьютера так и от версии флеша: (на 9 флеше приходит в среднем по два события, на 10 по 3-4). У меня скрол используется для изменения zoom'а. Стоит задача: как откалибровать скролл, чтобы при небольшом передвижении колеса мой код воспринимал это как +/-1? |
|
|||||
|
Делить полученную delta на три?
__________________
Дело не в тебе |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 65
|
Проблема не в дельте, а в том, что на одну прокрутку приходит N сообщений с delta=3
|
|
|||||
|
Modus ponens
|
повесить апдейт на ентерфрейм, и в ентерфрейме уже проверять не слишком ли изменилось значение.
Т.е. схема примерно такая: получили событие скрола, подняли флаг, и пока скрол не отрисовали в ентерфрейме остальные события игнорируем, после отрисовки флаг сняли. ЗЫ. дельта в разных браузерах и у разных мышек может очень сильно отличаться. Самый безумный вариант - Логитек + Хром примерно по пол экрана за раз прокручивает ![]()
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 07.12.2008 в 15:58. |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 65
|
Спасибо! Наверное так и сделаю.
Только жаль, что быстрые прокрутки будут восприниматься как медленные (все события мы воспримем как одно, а на delta, как Вы говорите, полагаться нельзя). |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:59. |
|
|
« Предыдущая тема | Следующая тема » |
|
|