我有一套点和线。这些点只是圈子,对我来说跟踪他们的位置很重要。如果我旋转我的集合,则集合中的所有元素都会更改画布上的位置。我需要能够检索每个点的位置信息。如果我按照我的观点做point.attr('cx')
,我可以看到没有任何改变。我尝试了一种方法,在我调用var bb = point.getBBox()
的点上,这似乎拉出了更新的点,但如果我尝试在给定点上设置更新的点信息,如point.attr('cx',(bb.x + (bb.width / 2))
,这会导致我的对象移动什么似乎是相同的轮换;所以我的15度成为30度旋转。 (我认为这是发生的事情,但不确定)我注意到我也可以console.log一个对象并看到一个point.attrs.cx并且它也没有更新所以我拍摄了手动更新它而它导致其他奇怪行为。我知道这很难在没有看到它的情况下遵循,但是如果有一些一般信息或一些最佳实践来操作一个集合并确保你可以跟踪其中的对象;似乎应该内置的东西;但也许有一种方法可以轻松添加它。谢谢。
答案 0 :(得分:1)
以下是我最终得到的结果......调用getBBox()
获取新坐标,这些坐标会更新到每个点的属性。致transform()
的电话是我遗失的部分,是回答我问题的关键。它重置对象上的变换数据,因此点位置可以对画布的坐标为真。
for (i = 0; i < points.length; i++) {
var bb = tools.points[i].getBBox();
points[i].attr('cx',bb.cx);
points[i].attr('cy',bb.cy);
points[i].transform('1 0 0 1 0 0');
}
感谢以下帖子,以便更好地了解SVG转换https://www.sarasoueidan.com/blog/svg-transformations/ 我还从这篇文章中收集了一些很好的信息。 What is a "matrix" for in raphael