Javascript FabricJS getCircle(按Id或名称)
我正在创建多个圆形对象,每个对象都有一个唯一的名称(或id)。 当我想要选择一个对象时,我必须搜索所有圆形对象并返回正确的对象。对于许多对象,我想这对性能不好。有没有办法通过唯一属性选择对象 我创建了一个简单的JSFIDLE,以显示获取圆形对象的当前解决方案: 我将每个对象与属性进行比较,如果其中一个匹配,则返回该对象。也许你能帮我找到一个更简单的解决办法 以下是迄今为止获取对象的代码:Javascript FabricJS getCircle(按Id或名称),javascript,frontend,fabricjs,Javascript,Frontend,Fabricjs,我正在创建多个圆形对象,每个对象都有一个唯一的名称(或id)。 当我想要选择一个对象时,我必须搜索所有圆形对象并返回正确的对象。对于许多对象,我想这对性能不好。有没有办法通过唯一属性选择对象 我创建了一个简单的JSFIDLE,以显示获取圆形对象的当前解决方案: 我将每个对象与属性进行比较,如果其中一个匹配,则返回该对象。也许你能帮我找到一个更简单的解决办法 以下是迄今为止获取对象的代码: function getPoint(name) { var line_point_array =
function getPoint(name)
{
var line_point_array = canvas.getObjects('circle');
for (var i = 0; i < line_point_array.length; i++) {
var point = line_point_array[i];
if (point.name == name) {
return point;
}
}
}
函数getPoint(名称)
{
var line_point_array=canvas.getObjects('circle');
对于(变量i=0;i
谢谢:)你可以试试类似()的东西:
谢谢你的回答。我认为这对我来说是一个更好的解决办法:)不客气。当然,这只适用于圆形,因为我在构造函数中硬编码了
newfabric.Circle
。我想可以修改它,使任何使用方括号的构造函数都能访问fabric
对象的方法,就像在newfabric[“Ellips”]()
中一样,其中“Ellips”将从添加到FabricCanvasObject
构造函数的新参数中传递过来..我不是fabric.js
方面的专家,但也许你想调查一下,如果你能解决你的问题。可能会提供一个更干净的解决方案。我会看看它,只是在我的项目中修复一些其他东西,但我希望它能帮助我提高性能。:)谢谢!
var FabricCanvasObject = function(canvasId, attrSet) {
this.theCanvas = new fabric.Canvas(canvasId, attrSet);
this.addShape = function(shapeAttrSet) {
var newShape = this.theCanvas.add(new fabric.Circle(shapeAttrSet));
this.canvasElements.length += 1;
this.canvasElements[shapeAttrSet.name + this.canvasElements.length] = newShape;
};
this.canvasElements = { length: 0 };
};
var myFabric = new FabricCanvasObject('c', {
targetFindTolerance: 15
});
console.log(myFabric);
myFabric.addShape({
radius: 20,
fill: 'green',
left: 100,
top: 100,
name: 'circle',
id: 1
});
myFabric.addShape({
radius: 20,
fill: 'red',
left: 150,
top: 150,
name: 'circle',
id: 2
});
myFabric.addShape({
radius: 20,
fill: 'blue',
left: 200,
top: 200,
name: 'circle',
id: 3
});
console.log(myFabric.canvasElements);
console.log(myFabric.canvasElements.circle1);