ios - SpriteKit : how to iterate through ancestors of a node?

标签 ios sprite-kit skspritenode sknode

我们要遍历节点的祖先,直到找到具有特定类的父节点。

SpriteKit 允许您使用 children 属性遍历子级,但 parent 属性只包含直接父级——而不是父级数组。我们如何遍历一个节点的所有祖先?

最佳答案

我不知道有什么函数可以让您在层次结构中向上移动,类似于 enumerateChildNodes 函数允许您在层次结构中向下移动。也许这个递归函数可能会有所帮助。下面我将递归设置为在没有父级或父级是 SKScene 类时结束。您可能需要对其进行调整,以便在找到您的特定类时结束递归。

func parentNodesOf(_ node: SKNode) -> [SKNode]
{
    if let parentNode = node.parent
    {
        if parentNode is SKScene
        {
            return []
        }
        else
        {
            return [parentNode] + parentNodesOf(parentNode)
        }
    }
    else
    {
        return []
    }
}

希望这对您有所帮助!

关于ios - SpriteKit : how to iterate through ancestors of a node?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43465786/

相关文章:

ios - swift:将 SKShapeNode 转换为 SKSpriteNode -> 无纹理

xcode - SKSpriteNode 快速检测到触摸

ios - 如何在导航 Controller 中将数据从一个 View 传递到另一个 View

xcode - 如何使用 MouseDown 更改场景

ios - 在 SpriteKit 中更改 contactTestBitMask 后检测接触

xcode - SpriteKit 物理体 : Could not create physics body for basic shape

ios - 具有多个项目的 Cocoapods : Firebase causes "Class XXX is implemented in both (...)" warning

iphone - 远程重新加载 View

objective-c - Dealloc 被调用两次?

ios - 球从墙上弹起不起作用