如何在 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 选择器。
我为转换修改的关键部分是这一行...
item.transform( g.transform().localMatrix.toTransformString() )
编辑:在这种情况下,您可以将其进一步缩短为
item.transform( g.transform() )
这确保我们在从组中删除时获得组转换,并使用 toTransformString() 对其进行转换(我不确定这是否完全必要,但通常似乎可以消除奇怪之处)。
编辑:问题稍作修改后,可能您实际上想要应用完整的矩阵,在这种情况下它会是...
item.transform( item.transform().globalMatrix.toTransformString() )
我正在使用 Snap SVG 构建一个编辑器。 我有一个带有一些转换的组标签。 我想取消分组。我尝试使用 for 循环将组中的元素添加到父级,但转换在未分组的元素中没有按预期工作。
谁能告诉我取消组合元素的方法?
请在这里找到 JS Bin。
https://jsbin.com/jinita/edit?js,output
在这里,当我拖动黑色矩形时,整个组也会移动。 当我放下它时,我尝试取消组合,但转换不适用于该组。
PS: 我无法在组元素上调用 drag()
代码有点混乱,因为您似乎在尝试向自己添加一个组,但我可能误解了它。我稍微修改了它并通过 ID 选择了组,只是为了知道它是正确的,而不是 css 选择器。
我为转换修改的关键部分是这一行...
item.transform( g.transform().localMatrix.toTransformString() )
编辑:在这种情况下,您可以将其进一步缩短为
item.transform( g.transform() )
这确保我们在从组中删除时获得组转换,并使用 toTransformString() 对其进行转换(我不确定这是否完全必要,但通常似乎可以消除奇怪之处)。
编辑:问题稍作修改后,可能您实际上想要应用完整的矩阵,在这种情况下它会是...
item.transform( item.transform().globalMatrix.toTransformString() )