2016-02-14 22 views
5

Wenn ich ein neues Hammer Pinch-Ereignis erstellen, und nicht die Anzahl der Zeiger in Optionen erwähnt, erkennt es nur maximal 3 Finger, und wenn Ich erwähne Zeiger zHammer.js: Wie Prise mit einer beliebigen Anzahl von/mehreren Fingern zu erkennen

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

, dann erkennt es nur Quetschungen mit 4 Fingern. Ich habe versucht, in der Dokumentation und überall zu suchen, aber war nicht in der Lage, eine Prise mit 2, 3 oder sogar 10 Fingern mit einem Ereignis zu erkennen. Ich brauche dies, da meine Web-App auf Bildschirmen so groß wie 81 "arbeiten muss.

Antwort

4

Nun, ich habe es endlich gelöst! Ich weiß nicht, ob es ein Hack ist, aber es funktioniert! Die Lösung war am Ende ziemlich einfach und es war die Option Zeiger auf 0, ja Null!

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

Nun, diese „multipinch“ Ereignis erkennt kneift mit einer beliebigen Anzahl von Zeigern von 2 bis hin 10.

Das von den docs hier inspiriert wurde: http://hammerjs.github.io/recognizer-pinch/ , die für die Zeiger Option sagen:

Also habe ich versucht, Zeiger Option auf 0 für die Pinch-Ereignis und Lo, es funktioniert!

1

Die PinchRecognizer überprüft die Anzahl der Zeiger genau das, was Sie angegeben haben. (Dies ist tatsächlich in der Superklasse AttrRecognizer überprüft) So ist es tatsächlich überraschend dass Sie drei Zeiger finden, wenn Sie den Zeigerparameter nicht angeben, da der Standardwert 2 ist.

Wie auch immer, ich sehe zwei Lösungen.Eine ist Ihre eigene Pinch Recognizer schreiben.Sehen Sie einfach in den hammer.js Quellcode und ändern Sie die vorhanden ist, ist es tatsächlich weniger als ein Bildschirm lang. Die attrTest Funktion ist, was Sie suchen.Rufen Sie nicht die Super-Methode (die die Anzahl der Zeiger überprüft), nur überprüfen, dass die Anzahl der Zeiger kleiner oder gleich ist was du willst.

Eine einfachere Lösung besteht darin, einen PinchRecognizer für jede Anzahl von Zeigern zu definieren. Wenn Sie also 4 Finger oder weniger erkennen möchten, gehen Sie so vor:

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 })); 

Haftungsausschluss: Ich habe dies nicht getestet. Möglicherweise müssen Sie recognizeWith anrufen, um alle Erkenner miteinander zu verknüpfen.

+0

Danke für Ihre Antwort. Ich habe es endlich anders gelöst. Überprüfe meine Antwort! – Parth

+0

Die zweite Lösung scheint zu umständlich, da ich für jede Nr. Erkenner schreiben müsste. von Zeigern von 2-10, und behandeln Sie sie dann. Zum Glück, Zeiger: 0 funktioniert sonst hätte ich den Pinch Recognizer ändern müssen. Übrigens ist es tatsächlich überraschend zu sehen, dass 3 Zeiger erkannt werden. – Parth