Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.05.2017, 13:58
Интересующийся
Отправить личное сообщение для Dimasick Посмотреть профиль Найти все сообщения от Dimasick
 
Регистрация: 15.04.2011
Сообщений: 26

отследить состояние кнопки мышки
Есть полотно (canvas), для которого активирую обработчик в виде
canvas.addEventListener('click', listener, false);
само полотно разбито на области и я просто проверяю, если над этой областью был клик, то область перекрашиваю. Все работает НО есть вопрос: как делать то же самое, не кликая, а протаскивая мышку над теми областями, которые надо перекрасить? В обработчиках событий нашел только клик, драг и т.п., но не увидел ничего похожего на то, что мышка проходит над областью с зажатой кнопкой.
Ответить с цитированием
  #2 (permalink)  
Старый 05.05.2017, 15:03
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Dimasick,
По событию mousedown назначать обработчики на mousemove или mouseover (как удобнее), по mouseup убирать обработчики
Ответить с цитированием
  #3 (permalink)  
Старый 05.05.2017, 22:05
Интересующийся
Отправить личное сообщение для Dimasick Посмотреть профиль Найти все сообщения от Dimasick
 
Регистрация: 15.04.2011
Сообщений: 26

Сообщение от Dilettante_Pro Посмотреть сообщение
Dimasick,
По событию mousedown назначать обработчики на mousemove или mouseover (как удобнее), по mouseup убирать обработчики
Не понял Можете это как-то понятнее написать ?
Ответить с цитированием
  #4 (permalink)  
Старый 06.05.2017, 09:09
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Поподробнее
function listenerMouseDown() {
   canvas.addEventListener('mousemove', listener, false);
};
function listenerMouseUp() {
   canvas.removeEventListener('mousemove', listener, false);
};
function listener() {
  //проверяю, если над этой областью было движение, то область перекрашиваю.
}
canvas.addEventListener('mousedown', listenerMouseDown, false);
canvas.addEventListener('mouseup', listenerMouseUp, false);

Имейте в виду, что событий mousemove будет очень много
Ответить с цитированием
  #5 (permalink)  
Старый 06.05.2017, 10:10
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Dilettante_Pro, если вне канваса произойдет mouseup, то обработчик не сработает, поэтому лучше на window назначить mouseup, или добавить еще mouseleave для удаления mousemove:
canvas.addEventListener('mouseleave', listenerMouseUp, false);

Последний раз редактировалось Rise, 06.05.2017 в 10:18.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
цикл функций на кнопки allexmak Events/DOM/Window 15 01.12.2016 16:52
Погоите разобраться с реагированием на события мышки filmokrut Общие вопросы Javascript 3 06.08.2016 20:07
Возврат в исходное состояние кнопки solobutova@mail.ru Элементы интерфейса 13 13.04.2016 18:14
Движение курсора над элементом при зажатой кнопки мышки Demath Общие вопросы Javascript 5 12.09.2013 17:32
Как отследить нажатие кнопки назад? olga153b Events/DOM/Window 3 06.11.2011 21:47