【发布时间】:2015-07-05 22:11:28
【问题描述】:
考虑以下代码:
canvas.addEventListener('touchstart', function(event) {
console.log('start');
});
当我用两根手指同时点击时,我有以下输出(很酷,因为打印了两次):
I/SnapScrollController(26508): setSnapScrollingMode case-default no-op
I/chromium(26508): [INFO:CONSOLE(69)] "start", source: file:///android_asset/index.html (69)
I/chromium(26508): [INFO:CONSOLE(69)] "start", source: file:///android_asset/index.html (69)
但是当我同时使用超过 2 个手指时,我得到了相同的结果,我做错了什么? 我预计日志“开始”的次数与我使用的手指一样多。
在另一边 touchmove 和 touchend 效果很好。
我已上传代码here
【问题讨论】:
-
有可能获得 3 次或更多的触摸??
-
如果您在 touchstart 和 touchmove 事件处理程序中记录
event.touches.length会发生什么?问题可能是,当您放下我们的无名指时,您移动了一个已经触摸的手指并导致系统更改为“移动”模式,因此它会从那时起触发 touchmove 事件。 -
@EdBallot 当我将 2 个手指(在同一个尖齿)放在屏幕上然后再放置一个时,我已经进行了测试,结果是下一个手指正在打印他们的日志。我的问题是我想同时捕捉所有 3,4 或 5 个 touchStartEvent 将手指放在屏幕上。我更新了问题上传代码。
-
感谢您的澄清。我在 ipad 和galaxyS5 上看到snappymaria.com/misc/TouchEventTest_v2.html 的测试结果是两者都支持
touchstart中的>2 个触摸点。在该页面上,它显示了event.touches的长度,因此它应该类似于“touch start 2”“touch start 3”,表示第一个touchstart拿起我的前两个手指,第二个拿起第三个手指。 -
@EdBallot 谢谢你:) 你说得对,我在 Sony Z2 上测试过,效果很好,但在我的 HTC One 上却不行:(
标签: javascript android webview multi-touch