如何在 Snap SVG 中取消组合元素

How to ungroup elements in Snap SVG

我正在使用 Snap SVG 构建一个编辑器。 我有一个带有一些转换的组标签。 我想取消分组。我尝试使用 for 循环将组中的元素添加到父级,但转换在未分组的元素中没有按预期工作。

谁能告诉我取消组合元素的方法?

请在这里找到 JS Bin。

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

在这里,当我拖动黑色矩形时,整个组也会移动。 当我放下它时,我尝试取消组合,但转换不适用于该组。

PS: 我无法在组元素上调用 drag()

代码有点混乱,因为您似乎在尝试向自己添加一个组,但我可能误解了它。我稍微修改了它并通过 ID 选择了组,只是为了知道它是正确的,而不是 css 选择器。

jsfiddle

我为转换修改的关键部分是这一行...

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

编辑:在这种情况下,您可以将其进一步缩短为

item.transform( g.transform() )

这确保我们在从组中删除时获得组转换,并使用 toTransformString() 对其进行转换(我不确定这是否完全必要,但通常似乎可以消除奇怪之处)。

编辑:问题稍作修改后,可能您实际上想要应用完整的矩阵,在这种情况下它会是...

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

jsbin