我试图了解集合如何与变换一起使用。基本上,我想要一个包含所有孩子的“容器”,我可以在画布上移动。
我创建了一个小提琴来表达我的意思,这是一个更大的绘图的简化。 http://jsfiddle.net/thibs/Hsvpf/
我创建了 3 个正方形,红色、黑色、蓝色。每个都被添加到一个集合中,然后它们被添加到一个主容器(集合)中。我添加了轮廓来显示画布和设置。
红色和黑色套装没有变换,但蓝色有。蓝色保留在“容器”集中......直到容器得到转换。
这是为什么?我以为变换被应用到了集合中的所有孩子......?
提前致谢
这是小提琴代码:
var paper = Raphael('holder');
var container = paper.set();
paper.rect(0, 0, '100%', '100%').attr({
stroke : 'red'
});
var rectRedSet = paper.set();
var rectRed = paper.rect(100, 10, 20, 20).attr({
'fill' : 'red',
'stroke-opacity' : 0
});
rectRedSet.push(rectRed);
container.push(rectRedSet);
var rectBlackSet = paper.set();
var rectBlack = paper.rect(150, 10, 20, 20).attr({
'fill' : 'black',
'stroke-opacity' : 0
});
rectBlackSet.push(rectBlack);
container.push(rectBlackSet);
var rectBlueSet = paper.set();
rectBlue = paper.rect(0, 0, 20, 20).attr({
'fill' : 'blue',
'stroke-opacity' : 0
});
rectBlueSet.push(rectBlue);
rectBlueSet.transform('t50,150');
container.push(rectBlueSet);
var containerBBox = container.getBBox();
paper.rect(containerBBox.x, containerBBox.y, containerBBox.width, containerBBox.height).attr({
stroke : 'black'
});
//trying to get the entire container and its children to move to 0,0
//commenting out the transform below will keep rectBlue in the container...?
container.transform('t0,0');