Abrufen von Touchstart-Koordinaten in einem Touchend-Event

8

Wenn ein Touchend-Ereignis auftritt, ist es möglich zu wissen, wo die Berührung begonnen hat (Touchstart-Koordinaten)? Auf den ersten Blick sieht das so einfach aus wie das Speichern der Koordinaten beim Touchstart, aber angenommen, das Ereignis ist an alle DOM-Elemente mit einer bestimmten Klasse angehängt (zB .special ). Nun bedenke ich, dass ich zwei Objekte mit der .special -Klasse anfasse und dann meinen Finger von einem entferne. Ich kann nicht nur den letzten gespeicherten Wert betrachten, weil es der erste Finger sein könnte, den ich hob.

Wie kann ich unter diesen Umständen die Touchstart-Koordinaten abrufen?

    
Casebash 06.03.2013, 06:58
quelle

2 Antworten

10

Am touchstart können Sie alle Werte speichern, die Sie benötigen (wie x, y, target, usw.). Auf touchend können Sie alle gespeicherten Werte dank des Touch.identifier -Werts abrufen, der für jede Berührung eindeutig sein sollte.

Ich habe hier einen Proof of Concept erstellt: Ссылка

Der folgende Code verfolgt nur x und y position, aber Sie können bei Bedarf jede Eigenschaft nachverfolgen.

Die Idee hinter dem Code ist:

  1. am touchstart erstellt ein Objekt und speichert alle darin enthaltenen Daten (einschließlich der Touch-ID)
  2. speichert dieses Objekt im Array
  3. auf touchend überprüfe die ID der Berührung und versuche das entsprechende Objekt im Array
  4. zu finden
  5. wenn gefunden, als wir fertig sind.

Und der Code:

%Vor%

Der obige Code verwendet jQuery, aber es wird nur zur Vereinfachung der Anzeige der Ergebnisse auf dem Bildschirm verwendet, jQuery wird für nichts anderes verwendet.

    
strah 08.03.2013, 12:13
quelle
4

Verschiedene touch -Ereignisse können durch event.target verbunden werden.

W3C-Spezifikationen für touchmove -Ereignis :

  

Das Ziel dieses Ereignisses muss dasselbe Element sein, das das Touchstart-Ereignis erhalten hat, als dieser Berührungspunkt auf der Oberfläche platziert wurde, selbst wenn der Berührungspunkt sich seitdem außerhalb des interaktiven Bereichs des Zielelements bewegt hat.

Sie behalten also den Überblick über event.target :

%Vor%

HINWEIS: nicht getestet. Ich sehe, dass @Strah eine gute Lösung hat, meine ist etwas vereinfacht und überprüft nur das event.target, nicht die Touch-ID. Aber es zeigt ein ähnliches Konzept.

    
Justus Romijn 15.03.2013 11:06
quelle

Tags und Links