如何移动raphael套装?

boz*_*arc 9 positioning raphael

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

met*_*ion 15

编辑:请参阅Rick Westera的答案,因为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);
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/q4vUx/

  • 如果你想让它更像一个图形,这可能有助于http://jsfiddle.net/q4vUx/1/ (4认同)
  • 翻译已被弃用,使用转换(请参阅下面的答案) (2认同)

Ric*_*era 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");
Run Code Online (Sandbox Code Playgroud)

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

  • 'T100,50'将使用全局轴将组100px向右移动50向下移动.
  • 't100,50'将使用集合的局部轴(即,它取决于集合的旋转方式).