我有一组与Raphael.set()
分组的对象。我想要做的是将整个集合(更改x
和y
坐标)从一个地方移动到另一个地方。
如何将整个集合作为单个对象移动?
我发现的是,当调用.attr({X: newX, Y: newY})
时,集合中的每个元素都将定位在此协调上,这将导致在一个地方堆积所有元素。
答案 0 :(得分:15)
修改:请参阅Rick Westera's answer,因为translate
现已弃用。
使用.translate(x, y)
,例如:
var paper = Raphael('stage', 300, 300);
var set = paper.set();
set.push(paper.rect(0,0,30,50));
set.push(paper.circle(40,50,10));
set.push(paper.path("M 0 70 L 100 70"));
set.translate(100, 100);
答案 1 :(得分:9)
使用transform('Tx,y')
不建议使用翻译。例如:
var paper = Raphael('stage', 300, 300);
var set = paper.set();
set.push(paper.rect(0, 0, 100, 100));
set.push(paper.text(50, 50, "Foo"));
set.transform("T100,50");
请注意,有两种类型的翻译:
答案 2 :(得分:2)
这是我用来重新定位一个集合,在我的例子中是Paper.print()返回的一组字体,但我认为它应该适用于任何类型的集合。
var glyphs = paper.print(0, 0, text, paper.getFont(font, 800), fontSize).hide();
glyphs.transform('...T' + [posx, posy] + 'R' + [angle, posx, posy]).show();
希望它有所帮助。