2013-05-27 42 views
0

我嘗試創建一些箭頭,所以我需要將一個矩形和兩個三角形分組,然後只是克隆這個東西。這裏是我嘗試這樣做:設置對象組不起作用

var paper = Raphael("arrows", 960, 100); 
var r = paper.rect(10, 10, 10, 50); 
r.attr({fill: 'black'}) 
var p1 = paper.path("M5,10L15,0L25,10Z") 
p1.attr({"stroke-width": 1, fill: "black"}); 
p2 = p1.clone(); 
p2.transform("t0,60r180"); 
st = paper.set(); 
st.push(r, p1, p2); 
ar2 = st.clone(); 
ar2.transform("t30,0"); 

的問題是,這P2轉化三角形是不可複製的,或者至少我不能看到它在克隆箭頭。 發表於jsfiddle:http://jsfiddle.net/empirik/rFuVy/1/

+0

安置自己的樣本代碼的某個地方的jsfiddle等..所以它會很容易檢查出來 – Arun

+0

我已經發布了它。更新了問題。 –

回答

0

我解決您的問題,您可能需要,如果你想改變箭頭的大小。但最好的方法是繪製一個path並克隆路徑而不是創建3個不同的形狀並將其推入SET

下面是代碼:

$(function(){ 
    var paper = Raphael(0,0, 960, 100); 
    var path = paper.path("M 20 20 L 35 5 50 20 43 20 43 80 50 80 35 95 20 80 27 80 27 20z").attr("fill", "black"); 

    path2 = path.clone(); 
    path2.transform("t50, 0");  

}); 

你也可以檢查出的演示here

+1

誰投下了? WTH?我回答德米特里米哈伊洛夫問題。 – Brian

0

轉換後的三角形不包含在克隆ar2中。

如果你只需要箭頭是完整的添加以下行到你的函數:

var p3 = p2.clone(); 
p3.transform("t30,60r180"); 
+0

但是爲什麼?其實,我需要將它們全部組合起來,因爲我需要製作大量的箭頭 –

+1

我對拉斐爾很生疏。如果使用st.push(r,p1),則輸出相同時,轉換後的箭頭似乎不包含在克隆整個箭頭時。將整個箭頭繪製成單個圖並克隆它,而不用擔心這個[如果它緊急]。 – Arun

相關問題