09.05.2014, 03:28
|
|
Регистрация: Oct 2010
Сообщений: 1,049
|
Можно так:
0) Создаем флаг was_moving = false. Вешаем прослушку mouse_down, mouse_up, mouse_click.
1) В обработчике mouse_down устанавливаем was_moving = false. Вешаем прослушку mouse_move.
2) В обработчике mouse_move устанавливаем was_moving = true (потому что раз обработчик вызван, то движение точно произошло и, заметим, ответственность за отслеживанием наличия движения ложится на плеер). После установки флага, можно здесь же удалить обработчик mouse_move.
3) В обработчике mouse_click смотрим установлен ли флаг was_moving:
3.1) Установлен: значит движение было (и mouse_move уже самоудалился), выходим из функции.
3.2) Не установлен: значит движения не было (mouse_move все еще висит), удаляем mouse_move, выполняем остаток функции.
Преимущество схемы: оставляем плееру решать было движение или нет.
Недостатки схемы: довольно запутана, постоянно вешать/снимать слушатель mouse_move может оказаться накладным. А может и нет.
|