在fabric.js 中围绕另一个对象旋转另一个独立对象

洛根

请参阅以下小提琴:https : //jsfiddle.net/logie17/r5zptv4o/

我想要做的是在旋转对象 B 时围绕对象 B 旋转对象 A。我的旋转功能如下所示:

function rotate() {
  let obj = boundingBox;
  obj.setCoords();
  let angle = fabric.util.degreesToRadians(obj.getAngle());
  let center = obj.getCenterPoint();
  let origin = new fabric.Point(center.x, center.y);
  let newCoords = fabric.util.rotatePoint(movingBox.getCenterPoint(),origin,angle);
  movingBox.set({ left: newCoords.x, top: newCoords.y }).setCoords();
}

但是正如您从小提琴中看到的那样,对象 A 旋转得非常快。我想保持旋转速度与旋转对象 B 相同。任何帮助将不胜感激。

洛根

我能够解决这个问题,我需要保存 objectA 坐标的状态和角度变化的增量。这是一个工作示例的演示:https : //jsfiddle.net/logie17/r5zptv4o/10/

canvas.on("object:rotating", function(options){
  rotate();
});

let previousAngle = null;
let origX = movingBox.getCenterPoint().x;
let origY = movingBox.getCenterPoint().y;
let line;

function rotate() {
  let obj = boundingBox;

  origX = movingBox.getCenterPoint().x;
  origY = movingBox.getCenterPoint().y;
  let topLeftPoint = new fabric.Point(origX, origY);

  if (!previousAngle) {
    previousAngle = boundingBox.getAngle();
  }
  let angle = fabric.util.degreesToRadians(boundingBox.getAngle() - previousAngle);
  previousAngle = boundingBox.getAngle();
  let center = obj.getCenterPoint();
  let origin = new fabric.Point(obj.left, obj.top);
  let newCoords = fabric.util.rotatePoint(topLeftPoint,origin,angle);

  if (line) {
    canvas.remove(line);
  }
  line = new fabric.Line([ newCoords.x, newCoords.y, origin.x, origin.y ], {
    fill: 'black',
    stroke: 'black',
    strokeWidth: 5,
    selectable: false
  });
  canvas.add(line);
  movingBox.set({ left: newCoords.x, top: newCoords.y }).setCoords();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Fabric Js将一个图像拖到另一个图像上

来自分类Dev

使用underscore.js在另一个对象中查找一个对象

来自分类Dev

从子对象克隆旋转并将其分配给THREE.JS中另一父对象的另一个子对象

来自分类Dev

JS 将一个对象复制到另一个对象

来自分类Dev

如何访问另一个JS对象中的匹配对象属性

来自分类Dev

Fabric.js-将object:modified事件同步到另一个客户端

来自分类Dev

Fabric.js-将object:modified事件同步到另一个客户端

来自分类Dev

JS- appendChild从一个div对象到另一个

来自分类Dev

将一个JS对象转换为另一个

来自分类Dev

过滤JS中另一个数组内的对象数组

来自分类Dev

如果一个对象在js中创建另一个对象,则子对象可以调用父对象吗?

来自分类Dev

JS:使用重命名的属性将一个对象分解为另一个对象

来自分类Dev

JS-将键从对象移动到另一个对象

来自分类Dev

如何在React JS中用来自另一个对象的数据填充对象

来自分类Dev

THREE.js-仅在另一个对象前面时才渲染对象

来自分类Dev

JS通过另一个对象数组过滤对象数组

来自分类Dev

如何从 Node.js 和 Express 中的另一个列表对象内部发送列表对象

来自分类Dev

在Fabric.js中仅对一个对象进行字符串化

来自分类Dev

如何使用jQuery / JS获取同一个父对象的另一个孩子的子元素

来自分类Dev

如何将一个 JS 对象的数据添加到另一个

来自分类Dev

在另一个函数中调用JS函数

来自分类Dev

覆盖另一个函数JS中的变量

来自分类Dev

在另一个文件中更新 JS 变量

来自分类Dev

从另一个实例初始化JS对象(运行时继承)

来自分类Dev

节点:从另一个js文件导入对象数组?

来自分类Dev

Node.js-从另一个函数/对象发出事件

来自分类Dev

是否可以引用JS数组/对象内的另一个元素

来自分类Dev

Angular JS将对象复制到另一个for循环中

来自分类Dev

JS筛选器数组与另一个数组的对象

Related 相关文章

  1. 1

    Fabric Js将一个图像拖到另一个图像上

  2. 2

    使用underscore.js在另一个对象中查找一个对象

  3. 3

    从子对象克隆旋转并将其分配给THREE.JS中另一父对象的另一个子对象

  4. 4

    JS 将一个对象复制到另一个对象

  5. 5

    如何访问另一个JS对象中的匹配对象属性

  6. 6

    Fabric.js-将object:modified事件同步到另一个客户端

  7. 7

    Fabric.js-将object:modified事件同步到另一个客户端

  8. 8

    JS- appendChild从一个div对象到另一个

  9. 9

    将一个JS对象转换为另一个

  10. 10

    过滤JS中另一个数组内的对象数组

  11. 11

    如果一个对象在js中创建另一个对象,则子对象可以调用父对象吗?

  12. 12

    JS:使用重命名的属性将一个对象分解为另一个对象

  13. 13

    JS-将键从对象移动到另一个对象

  14. 14

    如何在React JS中用来自另一个对象的数据填充对象

  15. 15

    THREE.js-仅在另一个对象前面时才渲染对象

  16. 16

    JS通过另一个对象数组过滤对象数组

  17. 17

    如何从 Node.js 和 Express 中的另一个列表对象内部发送列表对象

  18. 18

    在Fabric.js中仅对一个对象进行字符串化

  19. 19

    如何使用jQuery / JS获取同一个父对象的另一个孩子的子元素

  20. 20

    如何将一个 JS 对象的数据添加到另一个

  21. 21

    在另一个函数中调用JS函数

  22. 22

    覆盖另一个函数JS中的变量

  23. 23

    在另一个文件中更新 JS 变量

  24. 24

    从另一个实例初始化JS对象(运行时继承)

  25. 25

    节点:从另一个js文件导入对象数组?

  26. 26

    Node.js-从另一个函数/对象发出事件

  27. 27

    是否可以引用JS数组/对象内的另一个元素

  28. 28

    Angular JS将对象复制到另一个for循环中

  29. 29

    JS筛选器数组与另一个数组的对象

热门标签

归档