0

我正在使用“使用 JavaScript 的基础 HTML5 动画”一书中的示例创建一个支持触摸的游戏。书中的一个示例显示了基本的触摸功能,但不完全有效。这里是示例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);
4

1 回答 1

0
 element.addEventListener('touchstart', function (event) {
    touch.isPressed = true;
    touch.event = event;
}, false);

如果在您的球上触发了“touchstart”touch.x并且touch.y未定义,因此您无法识别球上的触摸。您在 touchmove 事件中进行跟踪touch.xtouch.y这就是为什么您在移动时识别出触球在球上的原因。

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

于 2013-03-26T16:29:18.050 回答