首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >KonvaJS:拆分后如何保持shape在群中的位置和旋转?

KonvaJS:拆分后如何保持shape在群中的位置和旋转?
EN

Stack Overflow用户
提问于 2019-07-03 17:22:51
回答 1查看 1.5K关注 0票数 0

如何在分离后保持组中形状的位置、旋转和缩放属性?

如果在用户移动或调整大小后分离组中的每个形状,旋转包裹在Transformer下的组,则看起来形状丢失了。

我尝试了一下,就像下面的源码一样。

代码语言:javascript
运行
复制
    <button id="ungroup">ungroup</button>
    <div id="container"></div>
代码语言:javascript
运行
复制
    const stage = new Konva.Stage({
       container: 'container',
       width: window.innerWidth,
       height: window.innerHeight
    });

    const layer = new Konva.Layer();
    stage.add(layer);

    const rect = new Konva.Rect({
       x : 50, y : 50, width: 100, height: 100,
       fill: 'black',
    });
    const rect2 = new Konva.Rect({
       x : 150, y : 50, width: 80, height: 80,
       fill: 'red',
    });

    const group = new Konva.Group({
        draggable: true
    });
    group.add(rect);
    group.add(rect2);

    const tr = new Konva.Transformer({
        node: group
    });

    layer.add(group);
    layer.add(tr);
    layer.draw();

    document.getElementById('ungroup').addEventListener('click', () => {
        tr.remove()
      // how can keep the moved or rotated properties?
      rect.moveTo(layer);
      rect2.moveTo(layer);
        group.removeChildren();
      group.remove();
      layer.draw();
    });

一组有两个矩形的可以用变压器移动。但在分离它们之后,它们会失去运动、缩放和旋转。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-03 21:15:25

您可以获取节点的绝对变换矩阵,并在分离后将其重新应用于节点。

代码语言:javascript
运行
复制
const transform = node.getAbsoluteTransform();
const attrs = transform.decompose();
node.moveTo(layer);
node.setAttrs(attrs);

演示:https://codepen.io/elscorpio/pen/VqvLpG

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56866900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档