2010-10-25 1 views
8

Как я могу получить положение объекта в Рафаэле? Я могу получить размер с помощью getBBox(), но, похоже, нет способа получить позицию?Позиция Рафаэля

+0

Проблема может быть первым определением «позиции» объекта. Если вы имеете в виду «центр тяжести» объекта, который в настоящее время должен вычисляться кодом приложения, поскольку он зависит от типа объекта. Прямо сейчас, похоже, нет кода библиотеки, чтобы получить центр общих фигур. Для произвольных фигур, я думаю, это может потребоваться определить на уровне приложения в любом случае, и ограничивающий прямоугольник позволяет вычислить его. Если по положению вы имеете в виду классическое положение верхнего левого угла, то атрибуты ограничивающей рамки (x, y) являются результатом, как упоминалось в @b_dubb. –

ответ

4

В зависимости от формы, документация, похоже, может быть доступна с помощью функции .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 х х, у, ширина, высота. Подробнее см. Документацию.

+0

el.getBBox - правильный подход. См. Ответ Дмитрия. – jbeard4

16

getBBox() должен предоставить вам положение, а также свойства x и y.

var bbox = el.getBBox(); 
alert([bbox.x, bbox.y]); 
+5

спасибо, но было бы здорово, если бы вы могли добавить эти советы в документацию raphaeljs. – Mermoz

+6

В документации Рафаэля –

2

вы можете также получить доступ к х и у значения таким образом:

var x = myCircle.attrs.x; 
var y = myCircle.attrs.y 
7

getBBox() возвращает объект с 5 свойствами. они:

  1. х
  2. у
  3. ширина
  4. высота
  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()

0

атрибуты x, y - те, что находятся внутри набора. Проблема здесь в том, что если набор переводится где-то еще, x и y, заданные в .getBBOx(), не учитывают перевод.

Raphael.transformPath (путь, преобразование) может помочь, применяя тот же трансформирует, что набор ...

перевести эту точку, вы можете:

tp = Raphael.transformPath("M"+x+","+y, set.attr('transform')) 
x = tp[0][1] 
y = tp[0][2] 

 Смежные вопросы

  • Нет связанных вопросов^_^