如何移动raphael套装?

时间:2012-01-13 12:26:29

标签: positioning raphael

我有一组与Raphael.set()分组的对象。我想要做的是将整个集合(更改xy坐标)从一个地方移动到另一个地方。 如何将整个集合作为单个对象移动? 我发现的是,当调用.attr({X: newX, Y: newY})时,集合中的每个元素都将定位在此协调上,这将导致在一个地方堆积所有元素。

3 个答案:

答案 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);

http://jsfiddle.net/q4vUx/

答案 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");

请注意,有两种类型的翻译:

  • ' T100,50'将使用全局轴将集合100px向右移动50并向下移动。
  • ' t100,50'将使用set的局部轴(即,它取决于该组旋转的方式)来执行相同操作。

答案 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();
希望它有所帮助。