Как я могу получить положение объекта в Рафаэле? Я могу получить размер с помощью getBBox(), но, похоже, нет способа получить позицию?Позиция Рафаэля
ответ
В зависимости от формы, документация, похоже, может быть доступна с помощью функции .attr()
. Так что, если это круг ...
var x = myCircle.attr('cx'); //cx is the center-x-coordinate of the circle
var y = myCircle.attr('cy'); //same, for y
var r = myCircle.attr('r'); //Radius of circle.
Квадратная бы attr
х х, у, ширина, высота. Подробнее см. Документацию.
el.getBBox - правильный подход. См. Ответ Дмитрия. – jbeard4
getBBox() должен предоставить вам положение, а также свойства x и y.
var bbox = el.getBBox();
alert([bbox.x, bbox.y]);
спасибо, но было бы здорово, если бы вы могли добавить эти советы в документацию raphaeljs. – Mermoz
В документации Рафаэля –
вы можете также получить доступ к х и у значения таким образом:
var x = myCircle.attrs.x;
var y = myCircle.attrs.y
getBBox() возвращает объект с 5 свойствами. они:
- х
- у
- ширина
- высота
- ToString()
если вы установите getBBox (ложь) будет возвращать данные координат для положения объекта ПОСЛЕ трансформации. установить его в getBBox (правда), чтобы вернуть координаты объекта до преобразования
использования, как это ...
paper.Raphael(10,10,300,300);
circle.paper(30, 55, 15);
var circleBBox = circle.getBBox(false);
редактировать: только что скачали R 2.1 и я считаю, что это добавило x2 и y2 к свойства, возвращаемые getBBox()
атрибуты x, y - те, что находятся внутри набора. Проблема здесь в том, что если набор переводится где-то еще, x и y, заданные в .getBBOx(), не учитывают перевод.
Raphael.transformPath (путь, преобразование) может помочь, применяя тот же трансформирует, что набор ...
перевести эту точку, вы можете:
tp = Raphael.transformPath("M"+x+","+y, set.attr('transform'))
x = tp[0][1]
y = tp[0][2]
Проблема может быть первым определением «позиции» объекта. Если вы имеете в виду «центр тяжести» объекта, который в настоящее время должен вычисляться кодом приложения, поскольку он зависит от типа объекта. Прямо сейчас, похоже, нет кода библиотеки, чтобы получить центр общих фигур. Для произвольных фигур, я думаю, это может потребоваться определить на уровне приложения в любом случае, и ограничивающий прямоугольник позволяет вычислить его. Если по положению вы имеете в виду классическое положение верхнего левого угла, то атрибуты ограничивающей рамки (x, y) являются результатом, как упоминалось в @b_dubb. –