2012-01-13 31 views
9

Tôi có một nhóm đối tượng được nhóm với Raphael.set(). Điều tôi muốn làm là di chuyển toàn bộ tập hợp (thay đổi các tọa độ xy) từ vị trí này sang vị trí khác. Làm cách nào tôi có thể di chuyển toàn bộ tập hợp thành một đối tượng? Những gì tôi thấy là khi một số .attr({X: newX, Y: newY}) được gọi là mọi phần tử từ tập hợp sẽ được định vị trên phối hợp này, điều này sẽ dẫn đến chồng chất tất cả các phần tử ở một nơi.Làm thế nào để di chuyển tập raphael?

Trả lời

15

Chỉnh sửa: Tham khảo Rick Westera's answertranslate hiện không được chấp nhận.

Sử dụng .translate(x, y), ví dụ:

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/

+4

nếu bạn muốn đồ họa thêm một chút, điều này có thể giúp dịch http://jsfiddle.net/q4vUx/1/ – limoragni

+2

không được dùng nữa, hãy sử dụng chuyển đổi (xem câu trả lời của tôi bên dưới) –

2

Đây là những gì tôi đang sử dụng để định vị một bộ, trong trường hợp của tôi là một tập hợp các phông chữ được trả về bởi Paper.print() nhưng tôi nghĩ rằng nó sẽ làm việc với bất kỳ loại thiết lập nào.

var glyphs = paper.print(0, 0, text, paper.getFont(font, 800), fontSize).hide(); 
glyphs.transform('...T' + [posx, posy] + 'R' + [angle, posx, posy]).show(); 

hy vọng điều đó sẽ hữu ích.

9

Sử dụng transform('Tx,y') vì bản dịch không còn được dùng nữa. Ví dụ:

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"); 

Lưu ý rằng có hai loại dịch:

  • 'T100,50' sẽ di chuyển các thiết lập 100px bên phải và 50 xuống bằng trục toàn cầu.
  • 't100,50' sẽ thực hiện tương tự nhưng sử dụng trục cục bộ của bộ (ví dụ: nó phụ thuộc vào cách mà tập hợp đã được xoay).
Các vấn đề liên quan