繁体   English   中英

使用 node.destroy() 时如何删除 konva 形状/图像

[英]How to delete a konva shape/image , when using node.destroy()

在使用 konva 时,我使用一个按钮将形状多次添加到我的舞台上,使用类似于

      document.getElementById('Rect').addEventListener( "click" , function () {

        let layer = new Konva.Layer();

        let item = new Konva.Rect({
          x: 20,
          y: 20,
          width: 100,
          height: 50,
          fill: 'green',
          stroke: 'black',
          strokeWidth: 4,
          draggable: true,
        });

这会附加一个矩形形状,如果多次单击它还会附加额外的形状我想为用户提供删除他希望使用按钮删除的特定形状的选项。 我尝试使用 Konva Tutorials 提供的上下文菜单教程,但是在实现删除 function 时可用

        document.getElementById('delete-button').addEventListener('click', () => {

          currentShape.destroy();

          layer.draw();
        });

无法删除添加到形状的变压器层

        document.getElementById('delete-button').addEventListener('click', () => {
          tr.detach();
          currentShape.destroy();

          layer.draw();
        });

我试图分离变压器/隐藏它,但它从形状的所有可用实例中删除它

怎么解决这个问题,非常感谢!!

您正在为“添加”按钮的click事件内的“删除”按钮添加一个新的click事件侦听器。 这意味着每次单击“删除”时都会触发所有侦听器。 这将删除所有变压器。

相反,您只需添加一次click侦听器并手动找到活动的Transformer以将其删除。

document.getElementById('delete-button').addEventListener('click', () => {
  const tr = layer.find('Transformer').toArray().find(tr => tr.nodes()[0] === currentShape);
  tr.destroy();
  currentShape.destroy();
  layer.draw();
});

https://codepen.io/lavrton/pen/VweKqrp?editors=0010

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM