将对象移动限制在fabric.js中的角度

时间:2018-03-16 19:02:51

标签: fabricjs

有没有办法将对象的移动锁定到特定角度? 例如,我想沿着一条45度角的线移动一个物体。

我知道obj.lockMovementX和obj.lockMovementY可以是true或false,我正在寻找的东西就像lockMovementTo:degrees - 它只允许对象沿某个角度移动。

由于我无法回答自己的问题,这就是我最终使用的问题。 可能有更优雅的方法来做到这一点 - 但嘿它有效:)

function restrictMovement(obj, angle){
  if(angle == 270){
    //tan 90 would be a problem
    obj.lockMovementX = true;
    return;
  }
  var start = obj.left;
  obj.on('moving', function(e){
    obj.lockMovementY = true;
    var ar = fabric.util.degreesToRadians(angle);
    //mutiply ar by -1 because we're clockwise..
    var newtop = obj.top  - (obj.left -start)  * Math.tan(ar * -1);
    obj.set('top', newtop);
    start = obj.left;
  });
}

0 个答案:

没有答案