hammer.js的双指点击Tap事件如何识别及冲突解决

要识别hammer.js的双指点击事件,我们知道可以增加一个识别器:

<code>var tap2 = new Hammer.Tap({event:'tap2',pointers:2});/<code>

如果只有这么一个识别器,那么工作起来是没问题的。但是当我们加上rotate后,就会出现问题了。tap2事件不触发了!

实际上,在hammer的多指操作中,不同识别器默认是不能同时识别多个事件的。这时候我们要使用recognizeWith使输入类似的操作能够同时识别。如下所示:

<code>rotate.recognizeWith(tap2);
pinch.recognizeWith([tap2,rotate]);/<code>

完整代码如下,可使单指Tap/双指Tap/旋转/缩放/滑动/拖动能够同时触发。

这时候可能要处理Tap2和rotateend时在业务上的冲突,但至少事件给触发到了。

<code>var hmObj = new Hammer(cvsObj.obj,{touchAction: 'pan-x pan-y'});
var tap2 = new Hammer.Tap({event:'tap2',pointers:2});
var rotate = new Hammer.Rotate();
var pinch = new Hammer.Pinch();
rotate.recognizeWith(tap2);
pinch.recognizeWith([tap2,rotate]);
hmObj.add([tap2,rotate,pinch]);
hmObj.get('swipe').set({ enable: true});
hmObj.get('pan').set({ direction: Hammer.DIRECTION_ALL });
hmObj.get('swipe').set({ direction: Hammer.DIRECTION_ALL });/<code>

Stackoverflow有类似的提问,坑也不大,但没看到有正确/可解决问题的答案。

所以还是要记录共享一下。

班门弄斧,行家莫笑。


分享到:


相關文章: