2010-10-25 30 views
8

Làm cách nào để có được vị trí của đối tượng trong Raphael? Tôi có thể nhận được kích thước bằng cách sử dụng getBBox(), nhưng dường như không có cách nào để có được vị trí?Vị trí Raphael

+0

Vấn đề đầu tiên có thể là một định nghĩa của "vị trí" của một đối tượng. Nếu bạn có nghĩa là "trung tâm trọng lực" của đối tượng, thì hiện tại phải được tính bằng mã ứng dụng vì nó phụ thuộc vào loại đối tượng. Ngay bây giờ, có vẻ như không có mã thư viện để có được trung tâm của các hình dạng phổ biến. Đối với các hình dạng tùy ý, tôi đoán nó có thể cần được xác định ở cấp ứng dụng, và hộp giới hạn cho phép tính toán nó. Nếu theo vị trí bạn có nghĩa là vị trí góc trên cùng bên trái cổ điển, thuộc tính của hộp giới hạn (x, y) là kết quả, như @b_dubb được đề cập. –

Trả lời

4

Tùy thuộc vào loại hình dạng của nó, tài liệu dường như nói rằng nó có thể được truy cập bằng cách sử dụng hàm .attr(). Vì vậy, nếu đó là một vòng kết nối ...

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. 

Hình vuông có attr s của x, y, chiều rộng, chiều cao. Kiểm tra tài liệu để biết thêm thông tin.

+0

el.getBBox là cách tiếp cận chính xác. Xin hãy xem câu trả lời của Dmitry. – jbeard4

16

getBBox() sẽ cung cấp cho bạn vị trí cũng như thuộc tính x và y.

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

cảm ơn nhưng nó sẽ là tuyệt vời nếu bạn có thể thêm những lời khuyên trong tài liệu của raphaeljs. – Mermoz

+6

Tài liệu trong tài liệu Raphael –

2

bạn cũng có thể truy cập vào các giá trị x và y theo cách này:

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

getBBox() trả về một đối tượng với 5 tài sản. đó là:

  1. x
  2. y
  3. rộng
  4. chiều cao
  5. toString()

nếu bạn thiết lập getBBox (false) nó sẽ trở lại tọa độ cho vị trí của đối tượng SAU KHI chuyển đổi. đặt nó vào getBBox (true) để trở về tọa độ cho các đối tượng trước khi chuyển đổi

sử dụng như thế này ...

paper.Raphael(10,10,300,300); 
circle.paper(30, 55, 15); 
var circleBBox = circle.getBBox(false); 

chỉnh sửa: chỉ cần tải về R 2.1 và tôi tin rằng nó đã được thêm vào x2 và y2 đến các thuộc tính được trả về bởi getBBox()

0

thuộc tính x, y là các thuộc tính trong tập hợp. Vấn đề ở đây là nếu tập hợp được dịch ở một nơi khác, x và y được đưa ra bởi .getBBOx() không tính đến bản dịch.

Raphael.transformPath (đường dẫn, biến đổi) có thể giúp bằng cách áp dụng cùng một biến rằng các thiết lập có ...

dịch điểm mà bạn có thể:

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