Hammer.js实现的多点触控平移

5
我正在使用hammer.js实现多点触控平移,但出现了困难。只有单指时会触发平移事件。当我尝试用两根手指拖动时,事件不会触发,直到我释放至少一个手指。 我需要在hammer配置中做些什么特殊的处理吗?
编辑:我已经发现可以将pan事件配置为2个指针,但是我发现Chrome内置了一个功能,可以通过双指轻点打开上下文菜单,这往往会阻止平移被识别。 如果我简单地捕获“contextmenu”事件并调用preventDefault(),它将完全禁用平移识别器。 还有其他方法吗?
敬礼, 丹尼尔

你是在谈论Chrome桌面版、Chrome for Android / iOS吗?在hammer.js 2.0.4中,多点触控平移在所有Chrome版本(桌面,Android)中都能基本使用。虽然Hammer.js 2.0.4存在某些问题,例如ev.deltaXY(多点触控平移)值跳动和一个panstart问题(如果这是你所说的),但是在这些问题修复之前,有解决方法可以使用。 - mrksbnch
1
你是如何配置pan事件的2个指针的?我已经尝试了所有方法,但都没有成功。你能帮我一下吗? - myTerminal
1个回答

2

您应该使用“pinch”事件。用于双指平移和缩放。PINCH事件具有属性:“pointers”,其中包括手指事件。

    var previous_pinch_delta = {
      x: 0,
      y: 0
    };
    hammered.on('pinch', function(e){
        camera.pan(e.deltaX-previous_pinch_delta.x, e.deltaY-previous_pinch_delta.y);
        previous_pinch_delta = {
          x: e.deltaX,
          y: e.deltaY
        };
      });

谢谢!我也使用了 e.scale 来区分双指平移和缩放。它并不完美(在达到缩放阈值之前,你会有一点点平移),但仍然很棒。 - Daniel Buckmaster
我不理解这个答案。你能解释一下如何区分平移和缩放吗?在你的捏合回调中,似乎只有平移,没有缩放。 - Michael
你好,Mike。很抱歉我没有足够的时间来解释,但我可以复制我的触摸传感器的完整源代码,希望能对你有所帮助:https://pastebin.com/Xk4AmcdC - saike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接