首頁  >  問答  >  主體

javascript - 原生canvas中如何取得到觸控事件的canvas內座標?

canvas在回應mousedown事件時,可以透過event.offsetX和offsetY來提取元素內座標,那我換成了touchstart後沒有offsetX和offsetY.該在哪裡找到元素內座標呢?

黄舟黄舟2680 天前644

全部回覆(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
  • 取消回覆