ES5 Canvas mousedown перетаскивание проблема - PullRequest
1 голос
/ 25 марта 2019

Я пытаюсь использовать mousedown, чтобы определить, когда вы держите предмет.Для контекста у меня есть 2 спрайта в массиве, и я могу обнаружить щелчок в их ограничительной рамке, и он правильно передается в mousedownHandler.

spArray [1] - это спрайт холста, который я пытаюсьперетащитьclickedBoundingBox работает правильно.

function canvasMouseDownHandler(ev,ctx,spArray){

   if (spArray[1].clickedBoundingBox(ev)){
       console.log("Mousedown successful");

       var mx = ev.offsetX; 
       var my = ev.offsetY;

       spArray[1].x = Math.round(mx-spArray[1].width/2);
       spArray[1].y = Math.round(my-spArray[1].height/2);

}

В настоящее время происходит мгновенная привязка к позиции мыши, и перетаскивание не поддерживается.Через консольный журнал я ожидал увидеть повторную запись «mousedown success»

Я думал об использовании функции setInterval для привязки спрайта к позиции мыши, но затем я столкнулся с проблемой очистки интервала наMouseUp.Я довольно новичок в событиях, и я изо всех сил пытаюсь понять это.

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 26 марта 2019

Если я правильно понял, вы ожидаете, что MouseDownHandler будет запущен во время движения мыши, я не знаю ни одного языка, который ведет себя таким образом ...

  • MouseDown должен быть единым целымсобытие времени каждый раз, когда кнопка мыши нажимается
  • , точно так же, как MouseUp происходит один раз, когда кнопка мыши отпускается.
  • Должен быть MouseMove, который срабатывает гораздо чаще.

С этой информацией вы можете заставить работать.
Перетаскивание - это каждое движение, которое происходит между MouseDown и MouseUp

...