首页  >  问答  >  正文

javascript - 原生canvas中如何获取到触摸事件的canvas内坐标?

canvas在响应mousedown事件时,可以通过event.offsetX和offsetY来提取元素内坐标,那我换成了touchstart后没有offsetX和offsetY.该在哪里找到元素内坐标呢?

黄舟黄舟2729 天前693

全部回复(3)我来回复

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-24 11:38:27

    在我的 canvas 地图库 Sinomap 中处理的算法是这样的(有改动):

    // 注意这里是为 canvas 的 DOM 元素增加 Listener 而非 canvas 的 ctx
    document
      .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])
    }

    回复
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-24 11:38:27

    touch事件 你需要 获取 e.touches[0].pageX 或者其他坐标,至于touchend 的话,为了兼容性考虑,最好用e.changedTouches

    回复
    0
  • 黄舟

    黄舟2017-05-24 11:38:27



    回复
    0
  • 取消回复