使用touchstart事件无法识别碰撞

collision isn't recognized using touchstart event

本文关键字:识别 碰撞 touchstart 事件 使用      更新时间:2023-09-26

我正在使用《Foundation HTML5 Animation with JavaScript》一书中的例子创造一款触屏游戏。书中的一个例子展示了基本的触摸功能,但不是完全有效。下面是指向示例的链接http://jsfiddle.net/yrXCN/3/

根据下面的函数,如果你在球内触摸画布,它应该记录消息"in ball: touchstart",但我还没有使它工作。当你进入球时,它会识别出球,但由于某种原因,它不能识别第一次触球。

如果我更改代码以使用鼠标侦听器,它会按预期工作。

canvas.addEventListener('touchstart', function (event) {
    event.preventDefault();
    if (utils.containsPoint(ball.getBounds(), touch.x, touch.y)) {
      log.value = "in ball: touchstart";
    } else {
      log.value = "canvas: touchstart";
    }
  }, false);
 element.addEventListener('touchstart', function (event) {
    touch.isPressed = true;
    touch.event = event;
}, false);

如果"touchstart"在你的球上被触发,touch.xtouch.y是未定义的,所以你不能识别球上的触摸。你在touchmove事件中跟踪touch.xtouch.y,这就是为什么你在移动时识别出触摸是在球上。

编辑:您可以通过在第88-91行的touchstart事件中设置touch.xtouch.y来解决这个问题