设置对象组不起作用

时间:2013-05-27 13:05:41

标签: 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.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/

2 个答案:

答案 0 :(得分:0)

转换后的三角形不包含在克隆ar2中。

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

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

答案 1 :(得分: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