是否可以Fabric.js
按名称获取对象?我可以添加子类,这将允许我向对象添加自定义名称属性.但之后我可以通过名称而不是索引来调用对象吗?例如
按索引调用 canvas.getItem(0);
我想要类似的东西 canvas.getItemByName(itemName);
您可以使用以下代码在应用程序级别执行此操作:
/**
* Item name is non-unique
*/
fabric.Canvas.prototype.getItemsByName = function(name) {
var objectList = [],
objects = this.getObjects();
for (var i = 0, len = this.size(); i < len; i++) {
if (objects[i].name && objects[i].name === name) {
objectList.push(objects[i]);
}
}
return objectList;
};
如果对象名称是唯一的,您可以执行以下操作:
/**
* Item name is unique
*/
fabric.Canvas.prototype.getItemByName = function(name) {
var object = null,
objects = this.getObjects();
for (var i = 0, len = this.size(); i < len; i++) {
if (objects[i].name && objects[i].name === name) {
object = objects[i];
break;
}
}
return object;
};
现在你可以打电话canvas.getItemByName('name1');
或canvas.getItemsByName('name1');
.