创建多个重复形状
Creating multiple repeating shapes
我有以下代码创建包含一些文本的矩形。我需要创建此矩形的多个可寻址实例,以便我可以单独为它们设置动画。每个矩形需要包含不同的文本标签。
var s = Snap(800, 600);
var block = s.rect(50, 50, 100, 100, 5, 5);
block.attr({
fill: "rgb(236, 240, 241)",
stroke: "#1f2c39",
strokeWidth: 3
});
var text = s.text(70, 105, "Hello World");
text.attr({
'font-size':20
});
block.attr({
width: (text.node.clientWidth + 50)
});
我不想重复我的代码,而是想创建一个函数来接受放置矩形的文本和坐标。实现这一目标的最佳方法是什么?此功能是否已包含在 snap.svg 中?
更新
我创建了另一个插件,这次是为了导入和缩放 SVG 图像。这是为此采取的最佳方法吗?使用`transform 属性缩放图像的唯一方法是什么?
导入 SVG 插件示例。
Snap.plugin( function( Snap, Element, Paper, global ) {
Paper.prototype.importImage = function( x, y, scale ) {
var ig1 = s.group();
var image = Snap.load("../package.svg", function ( loadedFragment ) {
ig1.attr({transform: 'translate(' + x + ',' + y + ') scale('+ scale +')'});
ig1.append( loadedFragment);
} );
return ig1;
}
});
您可以创建一个插件来为您提供新的元素选项,例如...
Snap.plugin( function( Snap, Element, Paper, global ) {
Paper.prototype.textRect = function( text, x, y ) {
var block = s.rect(x, y, 100, 100, 5, 5)
.attr({
fill: "rgb(236, 240, 241)",
stroke: "#1f2c39",
strokeWidth: 3,
});
var text = s.text(x + 20, y + 50, text).attr({ 'font-size': 20 });
block.attr({ width: (text.node.clientWidth + 50) });
}
});
var s = Snap(800,800)
s.textRect('Hi', 100, 100 );
s.textRect('There', 100, 200 );
如果您要四处移动或拖动它们或进行其他操作,您可能希望将它们都放在 'g' 组元素中,以便您可以对组执行操作。
我有以下代码创建包含一些文本的矩形。我需要创建此矩形的多个可寻址实例,以便我可以单独为它们设置动画。每个矩形需要包含不同的文本标签。
var s = Snap(800, 600);
var block = s.rect(50, 50, 100, 100, 5, 5);
block.attr({
fill: "rgb(236, 240, 241)",
stroke: "#1f2c39",
strokeWidth: 3
});
var text = s.text(70, 105, "Hello World");
text.attr({
'font-size':20
});
block.attr({
width: (text.node.clientWidth + 50)
});
我不想重复我的代码,而是想创建一个函数来接受放置矩形的文本和坐标。实现这一目标的最佳方法是什么?此功能是否已包含在 snap.svg 中?
更新
我创建了另一个插件,这次是为了导入和缩放 SVG 图像。这是为此采取的最佳方法吗?使用`transform 属性缩放图像的唯一方法是什么?
导入 SVG 插件示例。
Snap.plugin( function( Snap, Element, Paper, global ) {
Paper.prototype.importImage = function( x, y, scale ) {
var ig1 = s.group();
var image = Snap.load("../package.svg", function ( loadedFragment ) {
ig1.attr({transform: 'translate(' + x + ',' + y + ') scale('+ scale +')'});
ig1.append( loadedFragment);
} );
return ig1;
}
});
您可以创建一个插件来为您提供新的元素选项,例如...
Snap.plugin( function( Snap, Element, Paper, global ) {
Paper.prototype.textRect = function( text, x, y ) {
var block = s.rect(x, y, 100, 100, 5, 5)
.attr({
fill: "rgb(236, 240, 241)",
stroke: "#1f2c39",
strokeWidth: 3,
});
var text = s.text(x + 20, y + 50, text).attr({ 'font-size': 20 });
block.attr({ width: (text.node.clientWidth + 50) });
}
});
var s = Snap(800,800)
s.textRect('Hi', 100, 100 );
s.textRect('There', 100, 200 );
如果您要四处移动或拖动它们或进行其他操作,您可能希望将它们都放在 'g' 组元素中,以便您可以对组执行操作。