Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Wie erhalte ich die Koordinaten eines Berührungsereignisses im Canvas im nativen Canvas?

Wenn Canvas auf das Mousedown-Ereignis reagiert, kann es die internen Koordinaten des Elements über event.offsetX und offsetY extrahieren. Dann habe ich zu touchstart gewechselt und es gibt kein offsetX und offsetY

黄舟黄舟2680 Tage vor640

Antworte allen(3)Ich werde antworten

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新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])
    }

    Antwort
    0
  • 过去多啦不再A梦

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

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

    Antwort
    0
  • 黄舟

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



    Antwort
    0
  • StornierenAntwort