Auf touchstart
können Sie alle Werte speichern, die Sie benötigen (wie x, y, Ziel, usw.). Unter touchend
können Sie alle gespeicherten Werte dank des Wertes Touch.identifier
abrufen, der für jede Berührung eindeutig sein sollte.
Ich habe ein Proof of Concept hier erstellt: http://jsbin.com/adifit/3/
Der folgende Code Spur von x
und y
Position hält nur, aber Sie können alle Eigenschaften verfolgen, wenn Sie benötigen.
Die Idee hinter dem Code ist:
- auf
touchstart
ein Objekt erstellen und speichern alle innerhalb Daten (einschließlich der Berührungs ID)
- Speicher dieses Objekt in dem Array
- auf
touchend
Prüfung der ID der Berührung und versuchen, das entsprechende Objekt im Array zu finden
- wenn gefunden, als wir fertig sind.
Und der Code:
var touches = [];
var cons;
$(init);
function init()
{
cons = $("#console");
document.getElementById("area").addEventListener("touchstart", onTouchStart);
document.addEventListener("touchend", onTouchEnd);
document.addEventListener("touchcancel", onTouchEnd);
}
function onTouchStart(e)
{
e.preventDefault();
var touchList = e.changedTouches;
var touch;
for(var i = 0; i < touchList.length; i++)
{
cons.html(cons.html() + "startX: " + touchList[i].screenX + ", id: " + touchList[i].identifier + "<br/>");
touch = {x: touchList[i].screenX, y: touchList[i].screenY, id: touchList[i].identifier};
touches.push(touch);
}
}
function onTouchEnd(e)
{
cons.html(cons.html() + "<strong>TouchEnd:</strong><br/>");
var touchList = e.changedTouches;
var touch;
for(var i = 0; i < touchList.length; i++)
{
touch = {x: touchList[i].screenX, y: touchList[i].screenY, id: touchList[i].identifier};
for (var j = touches.length - 1; j >= 0 ; j--)
{
if (touches[j].id == touch.id)
{
cons.html(cons.html() + "<strong>startX: "+ touches[j].x+ ", id: " + touchList[i].identifier + "</strong><br/>");
touches.splice(j, 1);
}
}
}
}
Der obige Code verwendet jQuery, aber es wird nur zur Bequemlichkeit der die Ergebnisse auf dem Bildschirm angezeigt wird, wird jQuery nicht für etwas anderes verwendet.
Warum speichern Sie nicht die x, y, wenn die Berührung beginnt und retrive diese nach Freigabe ... –
Ich habe meine Antwort aktualisiert, hoffentlich ist es das, was Sie gesucht haben. – strah