2016-07-25 9 views
0

Ich benutze Snap SVG, um einen Editor zu erstellen. Ich habe ein Gruppen-Tag mit einigen Transform. Ich möchte die Gruppe aufheben. Ich habe versucht, die Elemente in der Gruppe zu übergeordneten mit einer for-Schleife hinzufügen, aber die Transformationen funktionieren nicht wie erwartet in den ungruppierten Elementen.Wie Gruppierung Elemente in Snap SVG

Kann mir jemand eine Möglichkeit geben, Elemente aufzulösen?

Hier finden Sie den JS Bin.

https://jsbin.com/jinita/edit?js,output

hier, wenn ich das schwarze Rechteck ziehen, wird die gesamte Gruppe bewegt sich auch. Wenn ich es ablege, versuche ich die Gruppierung aufzuheben, aber die Transformationen gelten nicht für die Gruppe.

PS: Ich kann nicht nennen drag() auf dem Gruppenelement

+0

Sie müssen anhängen das Element zum übergeordneten (oder anderen), wie du es erwähnst, aber du musst die Transformation herausfinden, um darauf zu platzieren. Wenn Sie ein minimales Beispiel für eine jsfiddle mit Beispieltransformation an Ort und Stelle zur Verfügung stellen können, sind wir sicher, dass wir weiter helfen können. – Ian

+0

Ich habe versucht, eine Geige hinzufügen, aber nicht funktioniert: https://jsfiddle.net/harikk09/4p2jvs45/1/ – Harikrishnan

+0

Sie müssten Jquery enthalten, und ich bin mir nicht sicher, es wird Remote-Downloads auf Jsfiddle ermöglichen. Sie könnten versuchen, eine jsbin oder etwas, sehen, ob das besser ist, und jquery, wenn Sie es verwenden (etwas so einfach, ich bin mir nicht sicher, dass Sie es brauchen). – Ian

Antwort

1

Der Code ein wenig verwirrend ist, wie es aussieht Sie versuchen, eine Gruppe zu sich selbst zu schreiben, aber ich kann es Missverständnisse. Ich habe es leicht geändert und die Gruppe nach ID ausgewählt, nur um zu wissen, dass es die richtige ist, anstatt css-Selektoren.

jsfiddle

Der wichtigste Teil I für die Transformationen geändert ist diese Linie ...

item.transform(g.transform().localMatrix.toTransformString()) 

Edit: In diesem Fall können Sie es wahrscheinlich zu

verkürzen weiter
item.transform(g.transform()) 

Dies stellt sicher, dass wir die Gruppentransformation zum Zeitpunkt des Entfernens aus der Gruppe erhalten, und wandeln sie mit toTransformString() um (ich bin mir nicht sicher, ob das ganz notwendig ist, aber scheint oft Kuriositäten zu beseitigen).

Edit: Nachdem die Frage leicht geändert worden ist, kann es sein, dass Sie tatsächlich die volle Matrix, in der die Anwendung wollen Fall wäre es ...

item.transform(item.transform().globalMatrix.toTransformString()) 

jsbin

+0

anwenden Danke für Ihre Antwort.Eigentlich muss ich die bestehende Gruppe nicht entfernen (ich entferne nur die neu erstellte Gruppe). Ich habe den JSBin aktualisiert, indem ich die Text-Tags der neu erstellten Gruppe hinzugefügt habe, um sie deutlicher zu machen. Ich mache einige Multi-Auswahl Gruppenbewegung. Deshalb füge ich die Elemente in die Gruppe ein und ziehe die neue Gruppe. https://jsbin.com/jinita/edit?js,output – Harikrishnan

+0

Jetzt können Sie sehen, dass die Gruppe sich bewegt, aber in dem Moment, in dem ich sie auflöste, wurden die Transformationen durcheinander gebracht. Das war das eigentliche Problem. Entschuldigung für die Verwirrung. Könntest du mir bitte dabei helfen? – Harikrishnan

+0

Ich habe ein bisschen hinzugefügt, meinst du das? Es gibt einen Fehler beim Ziehen von Code, aber ich nehme an, Sie konzentrieren sich nur auf das andere. – Ian

Verwandte Themen