Aks*_*ani 2 html javascript canvas html5-canvas konvajs
使用 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,
});
Run Code Online (Sandbox Code Playgroud)
这会附加一个矩形形状,如果单击多次,它还会附加额外的形状,我想为用户提供一个删除他希望用按钮删除的特定形状的选项。我尝试使用 Konva 教程中提供的上下文菜单教程,但是在实现那里提供的删除功能时
document.getElementById('delete-button').addEventListener('click', () => {
currentShape.destroy();
layer.draw();
});
Run Code Online (Sandbox Code Playgroud)
无法删除添加到形状的变换器层
document.getElementById('delete-button').addEventListener('click', () => {
tr.detach();
currentShape.destroy();
layer.draw();
});
Run Code Online (Sandbox Code Playgroud)
我尝试分离变压器/隐藏它,但它从形状的所有可用实例中删除了它
请问如何解决这个问题,非常感谢!!
您正在click为“添加”按钮的“删除”按钮 INSIDEclick事件添加一个新的事件侦听器。这意味着每次您单击“删除”时,所有侦听器都会被触发。这会删除所有变压器。
相反,您只需添加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();
});
Run Code Online (Sandbox Code Playgroud)
https://codepen.io/lavrton/pen/VweKqrp?editors=0010
| 归档时间: |
|
| 查看次数: |
9388 次 |
| 最近记录: |