锤.js:如何用任意数量的/多个手指检测捏合
Hammer.js: How to detect pinch with any number of / multiple fingers
当我创建一个新的锤子捏合事件时,没有提到选项中的指针数量,它最多只能检测到 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
才能将所有识别器链接在一起。
相关文章:
- 如何检测是否有溢出
- 如何检测用于WebGL的专用或集成显卡
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 如何在使用selectBoxIt JQuery插件时检测选项更改
- 如何使用密码检测网络中的状态连接
- 使用JavaScript检测Flash
- 在不阻止默认行为的情况下检测IE10中的缩放
- 检测个位数整数时正在转换毫秒
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 动态插入的表:JQuery未检测到最后一行
- 检测页面上某个元素中选择(突出显示)或单击的内容
- jQuery检测浏览器是否支持Zoom
- 如何检测多点触摸手指何时移动到子元素上
- 检测 HTML 页面中的手指悬停事件
- 在浏览器中检测 4 根手指滚动
- 锤.js:如何用任意数量的/多个手指检测捏合
- 如何在不退出应用程序的情况下在iOS上检测4个手指触摸
- 当手指离开屏幕上的对象时进行检测
- 我如何检测两个手指在touchstart在javascript
- JavaScript 手指滑动检测