Подтвердить что ты не робот

Fabricjs после объекта перемещается программно, его нельзя выбрать на новом месте

Я пытался перемещать объект программно и добиваться успеха, но после того, как объект перемещается программным способом, его невозможно выбрать объект, выбрав текущую позицию объекта, тем не менее объект выбирается из его старой позиции я попытались с canvas.calcOffset(); все еще не работать.

Как я могу сделать объект, который можно выбрать в его текущей позиции, код, который я использовал следующим образом

Javascript

 var canvas=new fabric.Canvas('canvas');
 canvas.add(new fabric.Rect({                    
                    left:100,
                    top: 100,
                    width: 75,
                    height: 50,
                    fill: 'white',
                    stroke: 'black',
                    strokeWidth: 3,
                    padding: 10,
                    selectable: true
             }));


function changePosition()
{
    canvas.item(0).set({left:300});
    canvas.renderAll();
    canvas.calcOffset();
}

HTML

<div>
<canvas id="canvas" width="400" height="400" style="border:1px solid red"/>
</div>
<input type="button" onclick="changePosition()" value="Change Possition"/>

Jsfiddle

Шаги по воспроизведению ошибки

  • Нажмите кнопку Change Position
  • Попробуйте выбрать прямоугольник в его текущей позиции и переместитесь к курсору на плавник, где ранее был объект, вы сможете выбрать объект
4b9b3361

Ответ 1

вам нужно запустить метод setCoords() один раз, если вы изменяете позицию объекта программно. Это приведет к тому, что Coords вашего объекта появятся на новом месте.