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. python - 有什么好的可以收集货币基金的资源?2. windows-7 - win7下使用cmder,如何设置vim的tab为4个空格?3. mysql 怎么做到update只更新一行数据?4. mysql - 要取出数据库中按某字段排序后的前10,20,30条数据要怎么做?5. word-wrap该如何使用?6. python 多进程 或者 多线程下如何高效的同步数据?7. javascript - CSS图片轮播显示问题8. python - 怎么进行服务器性能分析9. MySQL的SELECT...FOR UPDATE究竟起什么作用10. thinkPHP5中获取数据库数据后默认选中下拉框的值,传递到后台消失不见。有图有代码,希望有人帮忙

网公网安备