diff options
Diffstat (limited to 'client/lib/mouse.js')
| -rw-r--r-- | client/lib/mouse.js | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/client/lib/mouse.js b/client/lib/mouse.js index 990b8ef..809f209 100644 --- a/client/lib/mouse.js +++ b/client/lib/mouse.js @@ -15,6 +15,7 @@ mouse.register({ let fns = { down: [], move: [], + drag: [], up: [], } @@ -27,6 +28,7 @@ export default { register: (callbacks) => { callbacks.down && fns.down.push(callbacks.down) callbacks.move && fns.move.push(callbacks.move) + callbacks.drag && fns.drag.push(callbacks.drag) callbacks.up && fns.up.push(callbacks.up) } } @@ -36,17 +38,20 @@ let x, y, dragging = false function down(e){ x = e.pageX y = e.pageY + x /= window.innerWidth + y /= window.innerHeight dragging = true fns.down.map(f => f(x, y)) } function move(e){ - if (!dragging) return let dx = e.pageX - x let dy = e.pageY - y x = e.pageX y = e.pageY - dragging = true + x /= window.innerWidth + y /= window.innerHeight fns.move.map(f => f(x, y, dx, dy)) + dragging && fns.drag.map(f => f(x, y, dx, dy)) } function up(e){ dragging = false @@ -61,7 +66,7 @@ function touch(f){ } document.body.addEventListener("mousedown", down) document.body.addEventListener("mousemove", move) -document.body.addEventListener("mouseup", up) +window.addEventListener("mouseup", up) document.body.addEventListener("touchstart", touch(down)) document.body.addEventListener("touchmove", touch(move)) document.body.addEventListener("touchup", touch(up)) |
