Трудно написать этот заголовок, поскольку я не совсем уверен, в чем здесь проблема, но я предполагаю, что это связано с тем, как Fabric.js кэширует свойства объекта.
Скажем, я создаю прямоугольник:
let foo = new fabric.Rect({
left: 10,
top: 10,
height: 50,
width: 50,
fill: 'green'
});
canvas.add(foo);
canvas.renderAll();
И я хочу изменить его заливку при наведении:
canvas.on('mouse:hover', evt => {
if (!evt.target) return;
evt.target.set('fill', 'green');
});
Все отлично работает.
Однако, если я программно изменю положение или размер объекта:
foo.set({left: 500});
canvas.renderAll();
... событие запускается, только если я наведите курсор мыши на его OLD позицию, то есть пространство между tl = 10,10 / tr = 60,10 / br = 60,60 / bl = 10, 60, если я не наведу новую позицию в точке tl = 500,10 / tr = 560,10 / br = 560,60 / bl = 510,60.
Так что кеш не обновляется. Это происходит несмотря на вызов .renderAll()
после каждого такого изменения.
Что я делаю не так?