Я создаю несколько объектов окружности, каждый с уникальным именем (или id). Когда я хочу выбрать объект, мне нужно выполнить поиск по всем объектам окружности и вернуть правильный объект. Со многими объектами это не очень хорошо для производительности, я думаю. Есть ли способ выбрать объект по уникальному атрибуту?FabricJS getCircle по идентификатору или имени
Я создал простой JSFiddle, чтобы показать мой текущий обходной путь, чтобы получить круг объекта: https://jsfiddle.net/t47vvtec/5/
Я сравнить каждый объект с атрибутом, и если один соответствует его, объект будет возвращен. Может быть, вы можете помочь мне найти более легкое решение.
Вот мой код, чтобы получить объект до сих пор:
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;
}
}
}
Спасибо :)
спасибо за ваш ответ. Я думаю, что это лучшее решение для меня :) –
Добро пожаловать. Конечно, это работает только для кругов, поскольку я жестко закодировал 'new fabric.Circle' в функции конструктора. Я предполагаю, что это может быть изменено, чтобы использовать любой конструктор, используя квадратный скобки для доступа к методам объекта 'fabric', как в' new fabric ["Ellips"]() 'где" Ellips "будет передан из нового аргумента, добавленного в 'FabricCanvasObject' constructor .. – cssimsek
Я не эксперт по' fabric.js', но, возможно, вам захочется исследовать, есть ли [fabric.Collection] (http://fabricjs.com/docs/fabric.Collection.html) решает вашу проблему здесь. Может предложить более чистое решение. – cssimsek