我建立拉斐尔一些形状,现在我希望把一些文字放进去。但是,看起来,从实施例中,一个文本节点只能被附着到纸张和不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);
}

作为一种不同的方法,我也有一个页面上创建大量单独的文件对象的合理的成功。但是,这可能不是你想要去的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top