锤.js:如何用任意数量的/多个手指检测捏合

Hammer.js: How to detect pinch with any number of / multiple fingers

本文关键字:手指 检测 js 何用任      更新时间:2023-09-26

当我创建一个新的锤子捏合事件时,没有提到选项中的指针数量,它最多只能检测到 3 根手指,如果我提到指针,例如

var multiPinch = new Hammer.Pinch({event: 'multipinch', pointers: 4, threshold: 0});

,然后它只能检测 4 根手指的捏合。我尝试在文档和任何地方搜索,但无法检测到一个事件中 2、3 甚至 10 根手指的捏合。我需要这个,因为我的网络应用程序必须在 81 英寸的大屏幕上工作。

好吧,我终于解决了!我不知道这是否是黑客攻击,但它有效!最后的解决方案非常简单,就是将指针选项设置为 0,是的零!

var multiPinch = new Hammer.Pinch({event: 'multipinch', pointers: 0, threshold: 0});

现在,此"多捏"事件检测具有任意数量的指针(范围为 2 到 10(的捏合。

这是从这里的文档中启发的:http://hammerjs.github.io/recognizer-pinch/其中表示指针选项:

| Option   | Default | Description                             |
|:--------:|---------|-----------------------------------------|
| pointers | 1       | Required pointers. 0 for all pointers.  |

因此,我尝试将捏合事件的指针选项设置为 0,瞧,它奏效了!

PinchRecognizer检查指针的数量是否与您指定的指针数完全一致。(这实际上是在超类AttrRecognizer中检查的(因此,在未指定指针参数时检测到 3 个指针实际上令人惊讶,因为默认值为 2。

无论如何,我看到两种解决方案。一种是编写自己的捏合识别器。只要看看锤子.js源代码,修改现有的,它实际上不到一个屏幕长。attrTest功能就是您正在寻找的。不要调用 super 方法(它检查指针的数量(,只需检查指针的数量是否小于或等于您想要的数量。

更简单的解决方案是为所需的每个指针数定义一个捏合识别器。因此,如果您想检测 4 根或更少的手指,请像这样操作:

var mc = new Hammer.Manager(element);
mc.add(new Hammer.Pinch({ event: 'pinch2', pointers: 2, threshold: 0 }));
mc.add(new Hammer.Pinch({ event: 'pinch3', pointers: 3, threshold: 0 }));
mc.add(new Hammer.Pinch({ event: 'pinch4', pointers: 4, threshold: 0 }));

免责声明:我还没有测试过这个。可能需要调用 recognizeWith 才能将所有识别器链接在一起。