拖动选择不在konvajs中的组中的元素

问题描述 投票:0回答:2

有没有办法在KonvaJs中同时拖动多个元素而不对它们进行分组?

konvajs
2个回答
1
投票

这个想法是:听dragmove事件,对你需要移动的所有其他对象应用位置差异。

let oldX, oldY;
layer.on('dragstart', (e) => {
   oldX = e.target.x();
   oldY = e.target.y();
});
layer.on('dragmove', (e) => {
   const diffX = e.target.x() - oldX;
   const diffY = e.target.y() - oldY;

   // move everyone
   layer.children.each((child) => {
     // skip draggable circle
     if (child === e.target) {
       return;
     }
     // move other nodes
     child.x(child.x() + diffX);
     child.y(child.y() + diffY);
   });
   oldX = e.target.x();
   oldY = e.target.y();
});

但是:Kua zxsw指出


0
投票

我在组内有组(有时也在组内组)所以为了适应这样的设置我修改@lavrton回答使用递归:

http://jsbin.com/babasibudi/1/edit?js,output
© www.soinside.com 2019 - 2024. All rights reserved.