fix mouse pointer location
This commit is contained in:
parent
7553735eaf
commit
53112c5ea0
@ -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
|
||||||
|
|||||||
@ -85,10 +85,19 @@
|
|||||||
|
|
||||||
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
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user