我就是不明白。 Documentation解释了如何创建带有圆 Angular 的自定义矩形,但我应该如何创建一个内部有一些文本的矩形,就像这样:
+---------+
| |
| Hello |
| |
+---------+
好吧,很明显我应该创建一个组
,然后在其中放置一个矩形和文本,但是当我尝试以不同的方式执行此操作时,我什么也没有显示。
我正在尝试创建像这样工作的东西:
var draw = SVG('container');
var element = draw.customElement('hello').move(100, 100);
最佳答案
对于所有有同样问题的人:我已经找到了解决方案。这是:
SVG.CustomElement = SVG.invent({
create: 'g', // (1)
inherit: SVG.G, // (2)
extend: {
constructorMethod: function () {
// (3)
this.rect(100, 100).fill('red');
this.text('Hello').move(25, 25);
return this;
}
},
construct: {
customElement: function () { // (4)
return this.put(new SVG.CustomElement).constructorMethod();
}
}
});
定义如下:
- 这里是实际的 svg 元素标签,而不是 svg.js 抽象。例如,
g
将显示为<g></g>
等等。我的解决方案因此失败了。 - 这里是要继承的 svg.js 类。这些类可以在文档中找到,例如,组是
SVG.G
. - 我决定将构造函数方法放在元素的右侧,但这不是必需的。作为usage notes说,construct 不提供构造函数,而是提供可能调用构造函数的方法。
- 这里是将元素放置在您需要的任何位置所需的 DOM 操作。您可以调用您定义的任何其他方法。我用
constructorMethod
,但我当然可以使用,例如constructorMethod().move(100, 100)
或者只是move(100, 100)
或任何其他常规 svg.js 元素操作序列,只要我定义了此类方法即可。
关于javascript - 如何使用 SVG.invent() 创建自定义 svg.js 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44188728/