在js的Breakout游戏中触摸事件

时间:2017-10-04 13:57:53

标签: javascript touch

我想通过触摸在Breakout游戏中移动划桨。我试图将其作为鼠标悬停事件但它不起作用,尽管它在用作鼠标事件时起作用:

document.addEventListener("touchmove", funcTouchMove, false)


function funcTouchMove(e) {
    var relativeX = e.clientX - canvas.offsetLeft;
    if(relativeX > 0 && relativeX < canvas.width) {
    paddleX = relativeX - paddleWidth/2;
    }
}

一般来说,目标是触摸划水板,左右移动并像鼠标悬停一样玩。我很感激你的想法!

2 个答案:

答案 0 :(得分:1)

我通过添加以下代码使其工作:

document.addEventListener("touchmove", touchMoveHandler, false);

function touchMoveHandler(event) { 
  var relativeX = event.touches[0].clientX - canvas.offsetLeft;
  if(relativeX > 0 && relativeX < canvas.width) {
    paddleX = relativeX - paddleWidth/2;
  }
}

更新: 如果画布不在页面的边缘,该代码的 X 触摸阅读方式会向左偏移。以下内容让您轻松掌握。

 var relativeX = event.touches[0].clientX - canvas.getBoundingClientRect().left;

答案 1 :(得分:0)

有touchstart,touchend,touchmove事件。也许你在找那个?

e.g。创建一个操纵杆的画布并附加这些事件,如

canvasJoy.addEventListener("touchstart", inputStart, false);
canvasJoy.addEventListener("touchend", inputEnd, false);
canvasJoy.addEventListener("touchmove", inputMove, false);