fix mouse pointer location

This commit is contained in:
Peter Hart 2020-04-27 21:16:20 -04:00
parent 7553735eaf
commit 53112c5ea0
2 changed files with 18 additions and 5 deletions

View File

@ -3,3 +3,6 @@
Simple repo for keeping track of attempts to work with various web Simple repo for keeping track of attempts to work with various web
technologies. technologies.
## TODOS

View File

@ -86,9 +86,18 @@
const drawingElem = document.getElementById('drawing') const drawingElem = document.getElementById('drawing')
const colorElem = document.getElementById('color') const colorElem = document.getElementById('color')
function mousePosition(e) {
const canvasBounds = canvas.getBoundingClientRect()
const canvasSize = [canvas.width, canvas.height]
const x = e.pageX - canvasBounds.left - scrollX
const y = e.pageY - canvasBounds.top - scrollY
return [x/canvasBounds.width*canvasSize[0], y/canvasBounds.height*canvasSize[1]]
}
canvas.addEventListener('mousedown', e => { canvas.addEventListener('mousedown', e => {
drawing = true; drawing = true;
lastPosition = [e.clientX, e.clientY] lastPosition = mousePosition(e)
updateDebug() updateDebug()
}) })
canvas.addEventListener('mouseup', e => { canvas.addEventListener('mouseup', e => {
@ -104,20 +113,21 @@
if (!drawing) { if (!drawing) {
lastPosition = undefined lastPosition = undefined
} else { } else {
lastPosition = [e.clientX, e.clientY] lastPosition = mousePosition(e)
} }
}) })
canvas.addEventListener('mousemove', e => { canvas.addEventListener('mousemove', e => {
if (drawing) { if (drawing) {
const newPosition = mousePosition(e)
if (lastPosition !== undefined) { if (lastPosition !== undefined) {
console.log(`lineTo: (${e.clientX}, ${e.clientY})`) console.log(`lineTo: (${newPosition[0]}, ${newPosition[1]})`)
context.beginPath() context.beginPath()
context.moveTo(lastPosition[0], lastPosition[1]) context.moveTo(lastPosition[0], lastPosition[1])
context.lineTo(e.clientX, e.clientY) context.lineTo(newPosition[0], newPosition[1])
context.stroke() context.stroke()
} }
lastPosition = [e.clientX, e.clientY] lastPosition = newPosition
} }
}) })