题
我建立拉斐尔一些形状,现在我希望把一些文字放进去。但是,看起来,从实施例中,一个文本节点只能被附着到纸张和不SVG形状?
是否有可能产生具有不同的文本内的多个形状?
我使用的例子是:
paper.text(50, 50, "Raphaël\nkicks\nbutt!");
解决方案
在圣拉斐尔,所有绘图元素(形状,线,文本,等)只存在为包括纸对象的一部分。没有阶层结构对他们本身。也没有任何这些形状不幸的文本属性。因此,一个文本节点不能被“连接”到在合适的意义上的形状要素。
但是可以使用一个“设置”节点,得到被附着到的形状的文本节点的外观。 A设置是其中变换(平移,旋转,等等)可以在单个操作中被施加到所有成员元件的阵列。所以,如果你做包含一个矩形和一个文本节点的设置,你可以把他们这组元素为一体。然后,您可以创建一个组的第二个实例,区别对待它。因此,尽管所有文本元素技术上仍属于纸对象,它们的行为(以及出现)像他们属于矩形。
例如:
var paper = Raphael(0, 0, 400, 400);
for (var i = 0; i < 10; i++)
{
var group = paper.set();
group.push(paper.rect(10, 10, 50, 20));
group.push(paper.text(35, 18, "Hello"));
group.translate(Math.random() * 350, Math.random() * 380);
group.rotate(Math.random() * 90);
}
作为一种不同的方法,我也有一个页面上创建大量单独的文件对象的合理的成功。但是,这可能不是你想要去的。
不隶属于 StackOverflow