使用 KineticJS 从层中删除对象

Posted

技术标签:

【中文标题】使用 KineticJS 从层中删除对象【英文标题】:Removing objects from a layer using KineticJS 【发布时间】:2012-09-27 06:06:45 【问题描述】:

我目前正在从事一个涉及 KineticJS 的项目。

我必须不断地动态创建和删除形状,但似乎无法弄清楚如何做后者。我一直在努力:

 $ myLayer.remove(myShape)

因为这是大多数帖子似乎推荐的内容。但是,文档说这将从舞台上删除图层,而不是从图层中删除形状。当我在项目中尝试这个时,它实际上从舞台上删除了图层。

那么是我做错了什么还是有其他方法可以从图层中删除形状?

【问题讨论】:

不知道有没有更好的办法,但是看了一些动力学的js代码。我发现如果我执行 myShape.remove() ,形状就会从图层中移除。 【参考方案1】:

有两个功能可能会有所帮助。

childContainer.remove() 将 childContainer 从其父级中移除。 parentContainer.removeChildren() 从此容器中删除所有子项。

编辑:这也适用于形状。只需重绘图层即可。

myShape.remove();
myLayer.draw();

【讨论】:

thanx,我只是想知道这个!发现你甚至不需要重绘图层,在调用 remove 之后它立即消失了。 如何重新恢复?? @MahdiAlkhatib 如果您仍然有对孩子的引用,那么只需将它们添加到图层/容器中 那么如果没有变量指向它,它就会被销毁(垃圾收集)??【参考方案2】:

在 Kinetic 4.0 和最新版本之间的某个地方,remove(child) 停止工作。 removeChild(child) 也不起作用。

我通过使用 child.remove(); 解决了这个问题

【讨论】:

【参考方案3】:

你可以使用动力学函数的原型

Kinetic.Node.prototype.remove.call(removed_object);

baselayer.draw();

【讨论】:

以上是关于使用 KineticJS 从层中删除对象的主要内容,如果未能解决你的问题,请参考以下文章

在 KineticJS 中移除舞台

UG NX二次开发(C#)-外部模式-批量删除某些图层中的体对象和曲线对象

UG NX二次开发(C#)-外部模式-批量删除某些图层中的体对象和曲线对象

在 KineticJS 中使用多边形蒙版/剪辑图像

使用 jQuery (.animate) 和 KineticJS 框架调整画布大小

拖动时的 KineticJS 图层索引