2016-07-25 6 views
0

Я использую Snap SVG для создания редактора. У меня есть тег группы с некоторым преобразованием. Я хочу разгруппировать группу. Я попытался добавить элементы в группу к parent с циклом for, но преобразования не работают должным образом в негрупповых элементах.Как разгруппировать элементы в Snap SVG

Может ли кто-нибудь сказать мне способ разгруппировать элементы?

Пожалуйста, найдите здесь JS Bin.

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

Вот когда я перетащить черный прямоугольник, вся группа также движется. Когда я его бросаю, я пытаюсь разгруппировать его, но преобразования не применяются к группе.

PS: Я не могу назвать сопротивление() на элемент группы

+0

Вам нужно будет приложить элемент родительскому (или другому), как вы упомянули, но вам нужно будет отобразить преобразование, чтобы разместить на нем. Если вы можете предоставить минимальный пример jsfiddle с примером преобразования, я уверен, что мы можем помочь дальше. – Ian

+0

Я попытался добавить скрипку, но не работал: https://jsfiddle.net/harikk09/4p2jvs45/1/ – Harikrishnan

+0

Вам нужно будет включить jquery, плюс я не уверен, что он позволит удаленные загрузки на jsfiddle. Вы можете попробовать jsbin или что-то еще, посмотрите, лучше ли это, и включите jquery, если вы его используете (что-то простое, я не уверен, что вам это нужно). – Ian

ответ

1

код немного сбивает с толку, как это выглядит, как вы пытаетесь добавить группу к себе, но я могу быть недоразумений. Я немного изменил его и выбрал группу по ID, чтобы знать ее правильную, а не селекторов css.

jsfiddle

Ключевая часть I поправки для преобразований эта линия ...

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

Edit: В этом случае, вы, вероятно, может сократить его дальше

item.transform(g.transform()) 

Это гарантирует, что мы получим групповое преобразование во время удаления из группы и преобразуем его с помощью toTransformString() (я не уверен, что это полностью обязательно, но часто, кажется, устраняет странности).

Edit: После того, как вопрос был немного изменен, это может быть, что вы на самом деле хотите полную матрицу применяя в этом случае было бы ...

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

jsbin

+0

Благодарим вас за ответ.На самом деле мне не нужно удалять существующую группу (я удаляю только новую группу). Я обновил JSBin, добавив текстовые теги во вновь созданную группу, чтобы сделать ее более понятной. Я делаю несколько перемещений нескольких групп. поэтому я добавляю элементы в группу и перетаскиваю новую группу. https://jsbin.com/jinita/edit?js,output – Harikrishnan

+0

Теперь вы можете видеть, что группа движется, но в тот момент, когда я ее разгруппирую, трансформируются. это была актуальная проблема. извините за путаницу. не могли бы вы мне помочь? – Harikrishnan

+0

Я добавил немного, вы имеете в виду? У вас есть ошибка с вашим кодом перетаскивания, но я предполагаю, что вы просто фокусируетесь на другом бите. – Ian