Показать сообщение отдельно
Старый 09.05.2014, 03:28
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 2  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Можно так:
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 может оказаться накладным. А может и нет.