如何为没有鼠标的设备的滑动事件实现Hammer.js

时间:2014-08-19 12:18:25

标签: mouseevent swipe hammer.js

如何在没有鼠标的设备上实现Hammer.js以仅捕获swipeLeft和swipeRight事件?

在hammer.js的源代码中,我发现var INPUT_TYPE_MOUSE =';&#39 ;; 存在。在文档中,我没有找到如何使用选项禁用它。

如果我只想使用滑动识别器,是否要禁用预设中的所有识别器?

 preset: [
// RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]
[RotateRecognizer, { enable: false }],
[PinchRecognizer, { enable: false }, ['rotate']],
[SwipeRecognizer,{ direction: DIRECTION_HORIZONTAL }],
[PanRecognizer, { direction: DIRECTION_HORIZONTAL }, ['swipe']],
[TapRecognizer],
[TapRecognizer, { event: 'doubletap', taps: 2 }, ['tap']],
[PressRecognizer]
],

我如何通过选项来做到这一点?

1 个答案:

答案 0 :(得分:0)

要仅使用滑动识别器,您可以执行以下操作:

var mc = new Hammer.Manager(element, managerOptions);
mc.add(new Hammer.Swipe(recognizerOptions));
mc.on('swipeleft', leftSwipeHandler);
mc.on('swiperight', rightSwipeHandler);

More Control Section文档中对此进行了描述。

这不仅可以识别触摸设备中的滑动,还可以识别使用鼠标的滑动。我不知道如何禁用在鼠标设备中触发此事件。但我认为事件被解雇后你可以检查处理函数是什么样的指针引起了事件。为此目的使用event pointerType属性:

var leftSwipeHandler = function (event) {
  if (event.pointerType === 'mouse')
    return;
  // some more code
}

如果您使用jquery插件,则此属性位于gesture对象:event.gesture.pointerType