2015-09-29 12 views
1

Я пишу небольшой рокогнитор мобильного жесты с использованием библиотеки Hammer.js. К сожалению, кажется, что когда пользователь щелкает или зажимает, Hammer, js запускает также некоторые события панорамирования.Событие Pinch запускает событие pan в Hammer.js

Я думаю, что это происходит из-за того, что во время жесты щепотки пальцы пользователя слегка перемещаются.

Есть способ сделать Hammer.js игнорировать движение маленькой кастрюли во время щепотки?

Честно говоря, документация Hammer.js не совсем понятна.

Вот мой код:

    hammer = new Hammer.Manager(myelement); 
       var singleTap = new Hammer.Tap({ 
        event: 'tap', 
       }); 

       var doubleTap = new Hammer.Tap({ 
        event: 'doubletap', 
        taps: 2 
       }); 

       // SWIPE RECOGNIZERS 

       var swipeLeft = new Hammer.Swipe({ 
        event: 'swipeleft', 
        direction: 2 
       }); 

       var swipeRight = new Hammer.Swipe({ 
        event: 'swiperight', 
        direction: 4 
       }); 

       var swipeUp = new Hammer.Swipe({ 
        event: 'swipeup', 
        direction: 8 
       }); 

       var swipeDown = new Hammer.Swipe({ 
        event: 'swipedown', 
        direction: 16 
       }); 


       // PINCH RECOGNIZERS 
       var pinch = new Hammer.Pinch({ 
        event: 'pinch', 
        pointers: 2 
       }); 

       var pinchIn = new Hammer.Pinch({ 
        event: 'pinchin', 
        pointers: 2, 
       }); 

       var pinchOut = new Hammer.Pinch({ 
        event: 'pinchout', 
        pointers: 2, 
       }); 

       // PRESS RECOGNIZER 
       var press = new Hammer.Press({ 
        event: 'press', 
        pointers: 1, 
        threshold: 5, 
        time: 500 
       }); 

       // PAN RECOGNIZER 
       var pan = new Hammer.Pan({ 
        event: 'pan', 
        pointers: 0 
       }); 

       // ROTATE EVENTS RECOGNIZERS 

       var rotateStart = new Hammer.Rotate({ 
        event: 'rotatestart', 
        pointers: 2, 
        threshold: 0 
       }); 

       var rotateEnd = new Hammer.Rotate({ 
        event: 'rotateennd', 
        pointers: 2, 
        threshold: 0 
       }); 

       var rotateCancel = new Hammer.Rotate({ 
        event: 'rotatecancel', 
        pointers: 2, 
        threshold: 0 
       }); 

       // ADDING RECOGNIZERS TO HAMMER 
       hammer.add([doubleTap, singleTap]); 

       hammer.add([swipeDown, swipeUp, swipeRight, swipeLeft]); 

       hammer.add([pan]); 

       hammer.add([pinch]); 
       hammer.add([press]); 

       hammer.add([rotateStart, rotateEnd, rotateCancel]); 

       pinchIn.recognizeWith([pan]); 
       pinchOut.recognizeWith([pan]); 
       pan.requireFailure([pinchIn, pinchOut]); 

       // BEHAVIOUR ON TAP 
       doubleTap.recognizeWith(singleTap); 

       // DOUBLE/TRIPLE TAP RECOGNIZERS EXCLUSION 
       singleTap.requireFailure([doubleTap]); 

       //Binding Hammer's events with hammerHandler 
       hammer.on("tap doubletap press rotatestart rotateend rotatecancel swipeleft swiperight swipeup swipedown pan pinch", function (event) { 
        hammerHandler(event); 
       }); 

ответ

1

Я просто имеем дело с той же проблемой, и оказывается, что щепотка отключена по умолчанию. Вы должны включить его следующим образом:

hammer.get('pinch').set({enable:true}); 

Попробуйте добавить, что после вашей первой линии, и, надеюсь, вы должны увидеть событие пинч сообщается.

http://hammerjs.github.io/getting-started/