2013-05-27 45 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

相关问题