Ich baue ein Web-Handyspiel, es läuft auf Browsern (PC/Mobile).
Muss ich die verwenden touchmove
oder nicht?
Wie kann ich die ausführen touchmove
Veranstaltung wie die mousemove
Veranstaltung?
Soliman
Ich baue ein Web-Handyspiel, es läuft auf Browsern (PC/Mobile).
Muss ich die verwenden touchmove
oder nicht?
Wie kann ich die ausführen touchmove
Veranstaltung wie die mousemove
Veranstaltung?
Konstantin Dinev
Für die Parität zwischen Desktop und Touch haben Sie die folgenden Äquivalenzen:
mousedown === touchstart
mousemove === touchmove
mouseup === touchend
Also wenn du handhabst mousedown
, mousemove
und mouseup
dann müssen Sie die entsprechenden äquivalenten Ereignisse nicht unter Berührung behandeln. Es sollten dieselben Handler ausgeführt werden.
Das ist richtig, ABER:
Wenn Sie die Berührungsereignisse hinzufügen, funktioniert es NICHT wie die Mausereignisse.
Was wir für das Touch-Handy machen, läuft NICHT auf dem PC.
– Soliman
27. November 2012 um 8:25 Uhr
Sollte nicht sein (Mousemove && (MousedownHasFired && MouseupHasNotYetBeFired)) === TouchMove?
– Juan García
5. Juni 2014 um 18:41 Uhr
Das ist nicht wahr, mousemove ~= touchmove Bei mousemove nimmt es das Element, über das die Maus schwebte, aber bei touchmove nimmt es das erste berührte Element.
– Evavans
21. Februar 2018 um 21:20 Uhr
Was kann ich tun, wenn ich unter stackoverflow.com/questions/58934867/…
– Mahesh
20. November 2019 um 5:41 Uhr
Es scheint, als wäre der letzte Absatz eine leichte Vereinfachung. habe ich umgesetzt mousedown
+ mousemove
+ mouseup
, aber wenn ich meine App auf einem Touch-Gerät verwende, wird keiner von ihnen ausgelöst. Dies kann entweder (1) browserspezifisch sein, (2) aufgrund des synthetischen Event-Handler-Verhaltens in React oder vielleicht (3) ein Ergebnis einiger CSS-Eigenschaften wie zB touch-action
. Jede Klarstellung, unter welchen Umständen diese Aussage gilt, wäre willkommen.
– bluenote10
9. Januar 2021 um 17:15 Uhr
Außer auf dem iPad – wo Mausschweben, Maus runter, Maus hoch und klicken werden alle ausgelöst … außer wenn Sie irgendetwas im Mausschweben ändern … dann wird nichts anderes ausgelöst … sehr ärgerlich … mehr Details siehe http://sitr.us/2011/07/28/how-mobile-safari-emulates-mouse-events.html
Sie können beide in einer Komponente verwenden (wrt reagieren) für zB:
<component onMouseMove={handleMouseMove} onTouchMove={handleMouseMove} />
Auf der Basis des verwendeten Bildschirms wechselt die Reaktion automatisch zwischen Maus- und Berührungsoptionen, oder Sie können auch verwenden
("ontouchstart" in document.documentElement)
es gilt für Touchscreen-Geräte und umgekehrt ref: https://codepen.io/tteske/pen/KKwxOxp