jQuery / JavaScript Kollisionserkennung
Wie zu erkennen, wenn sich zwei <div>
Elementen kollidiert?
Den beiden divs sind einfach, die farbigen Kästchen Reisen, die senkrecht zu einander, so dass keine komplizierten Formen oder Winkel.
InformationsquelleAutor der Frage Chris Armstrong | 2010-11-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, das ist der einfachste Weg:
http://plugins.jquery.com/project/collidable
Ist hier ein anderes, in Deutsch:
http://www.48design.de/news/2009/11/20/kollisionsabfrage-per-jquery-plugin-update-v11-8/
Ich würde alles dafür geben, diesen einen Versuch.
--UPDATE--
Kann ich nicht wirklich verbringen jederzeit auf es jetzt, aber ich kann, wenn ich nach Hause komme, wenn niemand antwortet, aber du;d tun Sie etwas wie:
InformationsquelleAutor der Antwort Oscar Godson
Seine ein wenig spät, aber ich denke, man könnte diesen Ansatz verwenden, die ich versuchte, wenn ich Stand vor der ähnlichen situation. Der Vorteil hier ist, dass es keine zusätzlichen plugins oder scripts eingebunden und auch nicht, Sie einzuführen, Leistung hungrig in polling.
Diese Technik verwendet die der built-in Methoden und Ereignisse, die die Jquery-abwerfbaren zu bieten hat.
Ok, genug gesagt, hier ist die Lösung-Technik:
Sagen, wenn Sie zwei Elemente (Bilder in meinem Fall), und Sie nicht möchten, dass Sie sich überlappen oder erkennen, wenn Sie das tun, stellen Sie die beiden Elemente einer abwerfbaren und machen Sie zu "akzeptieren" jeder andere:
'CONFIG_COLLISSION_PREVENTION_DROPPABLE' sieht wie folgt aus:
Den 'aktivieren' - und 'drop' - Handler finden Sie im Abschnitt "dropactivate' und 'drop' - events von "abwerfbaren" plugin
Hier, der Schlüssel ist die 'drop' - callback. Sobald die zwei Elemente überlappen, und Sie werden gelöscht, die einen über die anderen, die 'drop' aufgerufen wird. Dies ist der Ort zu erkennen und Maßnahmen zu ergreifen, kann das senden von benutzerdefinierten Ereignissen oder Aufruf von anderen Aktionen (die ich hier wählte, um wieder das überlappende element-Position zu der ersten position bei der drag gestartet, das war gefangen in 'aktivieren', callback).
Das ist es. Keine Umfragen, keine plugins, nur die built-in events.
Gut, es können auch andere Optimierungen/Erweiterungen, die es geschafft, das war einfach der erste Schuss aus meinem Kopf, hat geklappt 🙂
Können Sie auch die 'dropover' und 'dropout' - Ereignisse zu signalisieren, und erstellen Sie eine visuelle Rückmeldung an den Benutzer, dass zwei Elemente sich überlappen, während Sie immer noch in Bewegung.
Hoffe, das hilft!
InformationsquelleAutor der Antwort Murtaza H
EDIT: ich habe geschrieben, in einem blog-Beitrag auf meiner website. Hier ein link, um es.
http://area36.nl/2014/12/creating-your-own-collision-detection-function-in-javascript/
Gut, ich hatte das gleiche problem, aber Dank der Antwort von Oscar Patenkind bekam ich eine Funktion, die funktioniert. Ich benutzte Jquery für einfache Codierung und weil ich faul bin ;p. Setze ich die Funktion in einer anderen Funktion, die ausgelöst wird, jeden zweiten so im Hinterkopf behalten.
Was es tut, ist im Grunde genommen wird es all die Werte
element1
bekomme und dann alle Werte vonelement2
. Dann mit der Hilfe von einigen Berechnungen, es zahlen alle die Werte. Dann in derif
- Anweisung vergleicht er den Platz vonelement1
zum Quadratelement2
. Wenn die Werte vonelement1
sind zwischen der linken, rechten, oberen und unteren Werte derelement2
. Wenn das wahr ist, den code in der unten ausgeführt wird.InformationsquelleAutor der Antwort Geke_Sulen
Ich lief in dieses verallgemeinerte Problem mich, so (full disclosure) machte ich ein plugin für Sie. Für einfache Kollision Abfragen über statische Objekte, versuchen Sie dies:
http://sourceforge.net/projects/jquerycollision/
Die es dir erlaubt, eine Liste von überlappenden Kollision Boxen (oder keine, wenn es keine Kollision):
hits = $("#collider").collision(".obstacles");
Oder eine Kollision während "ziehen", verwenden Sie diese:
http://sourceforge.net/apps/mediawiki/jquidragcollide/?source=navbar#collision
Die Ihnen eine "Kollision" - Ereignis zu verbinden. (Oder einen "Vorsprung" - Ereignis, um zu sehen, ob ein div entkommt ein weiteres div, derzeit enthält es.)
Wenn Sie die überprüfung von Kollisionen während der Bewegung andere als ziehen, rufen Sie einfach die original wiederholt, es ist ziemlich schnell. Hinweis: das ziehen, das man nicht schön spielen mit Größenänderung.
InformationsquelleAutor der Antwort eruciform
Post ist alt, Kann es jemandem helfen...
InformationsquelleAutor der Antwort Anoop B.K