有没有办法将对象的移动锁定到特定角度? 例如,我想沿着一条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;
});
}