fabric.js устанавливает объекты в новую позицию, но цель события не достигается - PullRequest
0 голосов
/ 06 мая 2018
var that = this;
var mouseEvents = this.mouseEvents();
this.timeAxis.on('mouseover', mouseEvents.timeAxisOver);
this.timeAxis.on('mouseout', mouseEvents.timeAxisOut);
this.canvas.on('mouse:over', mouseEvents.canvasOver);
this.canvas.on('mouse:out', mouseEvents.canvasOut);
this.canvas.on('mouse:down', mouseEvents.canvasDown);
this.startPoint.on('mousedown', function(e) {
  var originPos = new Array();
  that.canvas.getObjects().map(function(obj, i) {
    originPos.push({
      x: obj.left,
      y: obj.top
    });
  });
  this.originPos = originPos;
  this.pos = that.canvas.getPointer(e.e);
});
this.startPoint.on('moving', function(e) {
  var currPos = that.canvas.getPointer(e.e),
    originPos = this.originPos,
    moveX = currPos.x - this.pos.x,
    moveY = currPos.y - this.pos.y;
  that.canvas.forEachObject(function(obj, i) {
    obj.set({
      left: originPos[i].x + moveX,
      top: originPos[i].y + moveY
    })
  });
  that.canvas.renderAll();
});

Вот jsFiddle

Я новичок в fabric.js, и теперь у меня проблема. Я пытаюсь найти какое-то решение, но оно не работает. Когда я перемещаю объект методом set, объект перемещается, но его событие не следует, см. В коде. Цель события просто остается в предыдущей позиции, даже если я перепривязываю событие. Так что проблема в том, как заставить событие следовать за объектом, когда я устанавливаю новую позицию.

1 Ответ

0 голосов
/ 22 июня 2018

Вы должны использовать

object.setCoords();
...