swift - EnumerateChildNodesWithName,似乎无法删除节点

标签 swift position nodes enumerate

我试图在某些节点到达某个 x 位置后从父节点中删除它们。我遇到的问题是父节点正在更改 x 位置,但子节点没有更改父节点内的 x 位置(但显然与父节点一起移动),因此当我输入 if node.position.x < 300 时。 。 。 (删除节点),什么也没有发生。我尝试了下面的代码,但这只能工作一次,然后不会再次删除节点,我不能 100% 确定它停止工作的原因。

func cleanUp() {
    let positionX = nodeBase.position.x
    nodeBase.enumerateChildNodesWithName("segment", usingBlock: {
        node, stop in
        if node.position.x - positionX < 300 {
            node.removeFromParent()
        }
    })
}

任何人都可以看到我的代码哪里出了问题,或者你能给我指出正确的方向吗?

最佳答案

尝试以下操作:

nodeBase.enumerateChildNodesWithName("segment") { node, _ in
    if !self.intersectsNode(node) {
        node.removeFromParent()
    }
 }
node 位于 SKScene 边界内时,

intersectsNode 返回 true。因此,当 intersectsNode 返回 false 时,您就知道该节点位于屏幕外,您可以删除该节点。

关于swift - EnumerateChildNodesWithName,似乎无法删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30548965/

相关文章:

swift - 在 Swift 中按协议(protocol)查找

javascript - 为什么存在以及如何从页面 [Img inside] 中删除此空白区域

css - 绝对定位图像的水平居中

c# - 比较两个节点列表的总匹配度

javascript - While 循环,节点和 parentNode 未到达末尾

ios - 快速饼图切片

ios - Realm 复制所有对象

c# - 获取被点击的图片框的位置

java - 计算 BST 中的节点数

Swift:CollectionViewCell 没有出现在以编程方式创建的 UICollectionViewController 错误上