javascript - 原生canvas中如何获取到触摸事件的canvas内坐标?
问题描述
canvas在响应mousedown事件时,可以通过event.offsetX和offsetY来提取元素内坐标,那我换成了touchstart后没有offsetX和offsetY.该在哪里找到元素内坐标呢?
问题解答
回答1:在我的 canvas 地图库 Sinomap 中处理的算法是这样的(有改动):
// 注意这里是为 canvas 的 DOM 元素增加 Listener 而非 canvas 的 ctxdocument .getElementById(’my-canvas’) .addEventListener(’click’, updateHandler, false)function updateHandler (e) { // canvas 为你的 canvas ctx 变量 const box = canvas.getBoundingClientRect() const mouseX = (e.clientX - box.left) * canvas.width / box.width const mouseY = (e.clientY - box.top) * canvas.height / box.height console.log([mouseX, mouseY])}回答2:
touch事件 你需要 获取 e.touches[0].pageX 或者其他坐标,至于touchend 的话,为了兼容性考虑,最好用e.changedTouches
回答3:相关文章:
1. docker start -a dockername 老是卡住,什么情况?2. java内存模型的happens-before语义顺序问题3. :not 选择器 无效果 原因何在?4. linux - 阿里云服务器(centos)中svn同步web目录的问题?5. objective-c - iOS开发使用什么对html进行代码高亮6. android - RxJava 中有根据条件执行不同函数的操作符吗?7. java - 关于File的问题?8. 编程 - java 为什么没有静态方法接口,有没有哪门语言有静态方法接口。9. android - as添加依赖时一直是gradle:download状态10. java - 并发操作下关于队列的疑问?
