KonvaJS - 确定是否已单击舞台子级的方法



我喜欢用反应和打字稿学习KonvaJS。

我在组件上有一个单击处理程序,它将在单击它的 x 和 y 坐标处创建一个新星星。它通过将 x 和 y 坐标添加到状态来实现此目的。

该坐标数组映射在其上,该数组渲染图层中的星星。

我想知道的是舞台组件的推荐方法,以了解是否已单击空格或是否单击了星星。

如果单击了一颗星星,我想将其从状态中删除,但目前舞台正在那里添加一个新星星。

有没有办法让子组件,一个星星,与其祖父级,舞台进行通信,让它知道它已被点击,因此删除这个星星,而不是添加另一个?

您可以使用类似于下面发布的函数检查点击的目标,并检查该目标上的属性。如果匹配,请对其调用删除。否则,请添加新星号。

stage.on('click', function (e) {

console.log(e.target)

if(e.target.attrs.name === "star") //this would require you adding a name: "star" attribute to all star objects, but could be done another way
{
//code to remove star
}
else {
//code to add star
}
});

最新更新