Javascript 设置对象组不会';行不通

Javascript 设置对象组不会';行不通,javascript,raphael,Javascript,Raphael,我尝试创建一些箭头,所以我需要将一个矩形和两个三角形分组,然后克隆这个东西。以下是我如何尝试做到这一点: 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.cl

我尝试创建一些箭头,所以我需要将一个矩形和两个三角形分组,然后克隆这个东西。以下是我如何尝试做到这一点:

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变换的三角形没有被复制,或者至少我在克隆的箭头中看不到它。
发布在JSFIDLE上:

克隆ar2中不包括转换后的三角形

如果只需要完成箭头,请在函数中添加以下行:

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

我解决了您的问题,如果需要,您可能需要更改箭头的大小。但最好的方法是绘制一个
路径
并克隆路径,而不是创建3个不同的形状并将其推入
集中

代码如下:

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

});

此外,您还可以查看演示

将示例代码发布到JSFIDLE等的某个地方,这样就很容易查看了。我已经发布了示例代码。更新了问题,但为什么?事实上,我需要把它们都分组,因为我需要创作很多箭头。我对拉斐尔很生疏。克隆整个箭头时,转换后的箭头似乎不包括在内,如果使用st.push(r,p1),则输出相同。把整个箭头画成一个单独的情节,然后克隆它,而不用担心这个(如果它很紧急的话)。谁投了反对票?什么?我回答了德米特里·米哈伊洛夫的问题。