Как переместить Рафаэль сет? - PullRequest
9 голосов
/ 13 января 2012

У меня есть набор объектов, сгруппированных с Raphael.set().Что я хочу сделать, это переместить весь набор (изменить x и y координаты) из одного места в другое.Как я могу переместить весь набор как один объект?Я уже обнаружил, что при вызове .attr({X: newX, Y: newY}) каждый элемент из набора будет располагаться на этом координированном месте, что приведет к объединению всех элементов в одном месте.

Ответы [ 3 ]

15 голосов
/ 14 января 2012

Редактировать: См. Ответ Рика Вестеры , поскольку 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/

9 голосов
/ 21 марта 2013

Использовать 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' будет делать то же самое, но с использованием локальной оси набора (т. Е. Это зависит от того, каким образом был повернут набор).
2 голосов
/ 29 февраля 2012

Это то, что я использую для изменения положения набора, в моем случае это набор шрифтов, возвращаемых 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();

надеюсь, это поможет.

...